User talk:Klever

From Rosetta Code

I notice that you're using <lang VBA> for your VBA examples. Might I suggest using <lang vb> instead? Then the examples will get highlighted properly. (It's what I do.) -- Erik Siers 19:50, 4 October 2011 (UTC)

If there are significant differences between the languages it might be better to get VBA added to GeSHi. There are some instructions here. User:BenBE is our contact for the GeSHi project. If the languages aren't that different it's probably not worth it, but it may not be too difficult to get a language file set up (multiple users have done it before so I don't think it's too hard). --Mwn3d 20:06, 4 October 2011 (UTC)
There aren't, really. Visual Basic 4/5/6 is a general-purpose implementation of VBA, while the VBA embedded in apps such as Word, Excel, etc is geared toward that specific app -- things like the Document object in MS Word and the Spreadsheet object in MS Excel. (Forms also work somewhat differently.) But VBA can do literally anything that VB6 can (except compile), and VB can do anything that VBA can do, and the code is almost identical.
Most non-.Net VB code can be run from VBA with little or no changes, and vice-versa. -- Erik Siers 20:19, 4 October 2011 (UTC)
Hm. This suggests a way to fix language categorization for VB and VB.Net. On one hand, you have Visual Basic.NET. On the other, you have Visual Basic for Applications. Categorization ambiguities between VB 4/5/6, VB.Net and VBA were a thorn in my side from nearly the very beginning of this site. That still leaves VB 1/2/3, though. (And I played with VB for DOS as a kid. I don't know where that fits) --Michael Mol 13:57, 5 October 2011 (UTC)
VB can be divided into 4 broad categories: VBDOS, early VB, COM VB, and VB .Net.
  • VBDOS is really part of the QuickBASIC family -- in fact, VBDOS can compile most QB programs without change, and could be considered the "missing link" between QB and "real" VB. (There is a Win16 program included with VBDOS and maybe VB1 that can translate back-n-forth.) See this section of WP's VB page for a tiny bit of info. (The "forms" part of VBDOS is almost identical to VB1; it's everything else that needed translating.)
  • Early VB is VB1-3. The language is essentially the same as VB4-6, but the internals are a bit different, they're 16-bit only, and they use VBX controls instead of COM (OLE, ActiveX, OCX) controls.
EDIT: I wouldn't worry about the Win16 VB's much; they're almost certainly not in use any more. As far as programmers are concerned, early VB can probably be grouped with COM VB, for the most part. The language doesn't change very much from, say, 3 to 4, or even 1 to 6; someone who learned on VB1 could jump to VB6 and be up to speed within a day. -- Erik Siers 17:28, 5 October 2011 (UTC)
  • COM VB is VB4 through VB6, and VBA. They are Win32 (VB4 also has a Win16 version) and use ActiveX (OCX) components.
  • VB.Net isn't really VB, as far as most "classic" VB programmers are concerned. It's got a VB-ish syntax, but the differences are great enough that it's really a separate language.
Hope that helps. Karl Peterson is one of the main VB experts on the www; I'll try poking him and see if he'll swing by and add in his 2¢. -- Erik Siers 17:18, 5 October 2011 (UTC)
Agree with Erik on nearly all counts. VBA is one of the libraries that compose ClassicVB, by which I refer to VB4-6 most often. VB1-3 are also ClassicVB, although 16-bit and without a few behavioral changes (Evil Type Coercion, DWORD alignment, and Unimess) introduced with the move to 32-bit at VB4. The host object models used in VBA (Document, Application, etc) are wholly independent of the VBA library itself. And VB proper does offer a handful of objects (Printer, Clipboard) not available in VBA. But, all in all, VB and VBA are much the same. In fact, I use one set of keyword definitions to parse either.
VB.NET, on the other hand, is VB in name only. Should've been called Visual Fred, according to some. It is in no way, shape, or form ClassicVB. And VBDOS is really just a variation on QuickBasic. That said, both QB and VBDOS code loads and runs almost without fail, other than uniquely platform dependent operations, in VB1-6.
If anyone wanted my best advice on categorizing VB dialects, I'd say VB/VBA can quite safely be lumped together without much concern about the minute distinctions between them. QB/VBDOS are really just earlier dialects on a 25-year continuum of forward-compatible Microsoft BASIC platforms. The most clear division, if there is to be but one, would be to break off at VB.NET as very little code can move back and forth, and of the little that can actually execute on both some will produce different results! That's a terrible trap for Microsoft to have laid for its users, and needs to be highlighted at any/all opportunity.
~~ Karl Peterson