So Why do I still prefer vb6?

 - lite weight, easy to use

 - default variant type and no need to define every variable makes it very 
   flexible and as fast as a scripting language to code in, yet also supports
   the ability to enforce type checking for larger projects

 - apps start up extremely quickly, this is important especially during
    development when you have to start up your app to test it many many many times.

 - the debugger is great and has all the modern features. It still supersedes whats
    available in many other languages!

 - when paused you can edit code in any procedure
 - in .net edit and continue is limited to current procedure only

 - when paused the GUI continues to repaint so you can see
    any visible output you have already added to lists etc. (.net does not)

 - edit and continue doesnt always work in .net

 - you can have direct access to memory without having to marshal and pin

 - automatic type conversions and variable initialization. if you want to 
   append a number onto a string you can just say "result: " & intResult
   verses having to explicitly cast it to string like intResult.toString()
   (These add up)

 - the auto variable initialization is great is you are coming from a language
   like C

 - easy integration with the Windows API, standard C dlls, and unparalleled easy 
    access to COM objects and types.

 - same runtime works from win98 - windows 10
 - runtime is only 1mb plus any external dll/ocx's you use

 - .net runtime is hundreds of mb and there are multiple versions.
    older versions are no longer installed by default on new machines, older 
    machine dont come with any .net runtime, and it may not even be available for
    them. so much for compile once run anywhere.

 - compiles to native machine code and can be run through a standard x86 debugger
    if problems arise.

 - can not be decompiled back to source form like .net can. 
 - does not contain metadata about every inner function.
 - has loads of sample code available
 - intellisense lists are not burdened with garbage and complexity, just what you add

 - vb6 provides a natural path for developers to learn about the Windows API and work their
   way down into C programming, and eventually even COM programming.

 - vb6 executable size is decently small, its a good tradeoff between executable and runtime
   size. Also since the runtime hasnt changed in SOOO long, most people already have it
   as well as the common microsoft activex components. 

People will say things like vb6 is to simple and its built in tools for things like parsing 
strings or accessing files is to primitive. They may also balk that it doesnt have the built
in functionality to do things like download files or do complex http requests, or even not
having access to unsigned long or 64 bit types.

All of these things are true, however..those arent really valid arguments. VB6 has been around
for a very long time and it has all the primitives you need to build these things. The first
thing you did as a new VB6 programmer was to create your own file system class to make access
to things like FileExists and ReadFile functions easier to use. Similarly the other issues
are easily fixed through the use of various classes which already exist.

Yes it would be nice if the same classes were readily available to every and nicely debugged, BUT
creating your own is also an important exercise in your development as a programmer. Also I prefer
to add in only the functionality i need into a project instead of having to rely on a multi
hundred mega byte runtime install. 

Installing the various activex dependencies you need is also not complicated. Many times your 
application can actually check for thier existence and install them itself at runtime during 
startup routines before they are needed. Even if you cant, creating an installer is not 
all that complex and there are good free tools available such as InnoSetup.

Now this is not to say its all rainbows and unicorns. There are things I wish it had.
such as a more compact syntax such as C#. Really though everything else you can accomplish 
through libraries. It is an old language, you cant expect it to have all the modern libraries 
such as json parsing available to it, but you can surly add them in.

The reason I still use it, it because even despite these things, I find it to be the best match
for my needs in terms of easy of use, and speed of development. The bottom line is its 
capabilities still meet all of my needs, and it still has an ideal power to weight ratio.
(.net's main downfall in my eyes)

All i really want is a stable general purpose language that doesnt have a zillion features that 
help people write confusing code, is easy to write stable GUIs in, and can integrate with other 
languages well.