Joel said some good stuff about VB6 back in 2001.
Many VB6 programs are spaghetti,
either because they're done as quick
and dirty one-offs, or because they're
written by hack programmers without
training in object oriented
programming, or even structured
programming.
What I wondered was, what happens if
you take top-notch C++ programmers who
dream in pointers, and let them code
in VB6. What I discovered at Fog Creek
was that they become super-efficient
coding machines. The code looks pretty
good, it's object-oriented and robust,
but you don't waste time using tools
that are at a level lower than you
need. I've spent years writing code
for C++/MFC and years writing code in
Visual Basic, and let me tell you, VB6
is just much, much more productive...
One of the things about Visual Basic 6
is that it doesn't always give you
access to the full repertoire of
Windows goodies that you need to make
a polished application. But what it
does do, better than almost any other
programming environment, is let you
drop into C++ code (or call C APIs)
when you're desperate or when you need
that extra speed.
That was written in 2001: when creating a new Windows program today, IMHO the obvious choice for best productivity is VB.Net or C#. (JOKE: C# is just Visual Basic with semicolons.)
Getting back to VB6: there are many good examples of how to call C APIs to do something special or just to run faster. Here's some of my favourite links: