views:

160

answers:

4

I ve heard things like you cannot manipulate tables in C# but can through VBA.

Does any one know what can be done via VBA which cannot be done via C# PIA?

+2  A: 

One thing I remember while working on a Excel addin was that the OnAction method of pictures/shapes added on a worksheet will not call into the C# addin which seems like a limitation. You can set the OnAction to a VBA macro only. This might not be directly related to your question on the differences in C# and VBA but it just crossed my mind when I saw the questions.

A9S6
+1  A: 

Fundamentally, there is no real difference. You can do pretty much anything in either environment, especially if you're talking about VB.net and C# - they are more or less different syntaxes that target the same libraries and platforms.

There are some syntactical differences where certain features of one language do not have direct equivalents in the other, but as long as you have a few basic elements you can write code to achieve the same ends in both.

In some programs you can use VB script (which is a variant of VB) for macros, and in those cases C# can't be used as a direct replacement. But that is a limitation of the host programs, not of VB/C# per se.

edit: You've changed the question completely now, so this answer is probably no longer relevant.

Jason Williams
+1  A: 

You cannot debug a problem as it happens on a user's PC with C# because you will not have Visual Studio installed there. With Excel VBA, you can debug from any PC you run the code on.

EDIT (response to Anonymous' comment)

Whilst you can remotely debug this is not the same, as far as I understand. It requires at least the firewall to be opened up to permit the debug traffic (will likely require some major signoff in big corporates) and you cannot debug and repair an ongoing user problem as it happens. Obviously this can't be done with most programming environments, but it was one of VBA's strengths - well, depending on your point of view, I suppose.

Joel Goodwin
but can't you enable remote debugging, by just installing the remote debug package on the client machine? Most scenarios will be debugging on the same corporate network as the developers machine.
Anonymous Type
A: 

i think the most important difference from a business perspective is that with C# you no longer have as many "non programmers" lob managers, etc that can produce code (macros). The process is inherently more formalised.

In terms of syntax there are lots of differences... but none that are really an issue in terms of the ability to make use of the object model.

Sometimes you will find C# requires a few more lines of code, but in others less. Also you will find that alot of the times where you were required to use System API calls are now redundant.

Anonymous Type