Programming codex

Guide to Visual Basic 6

Guide to Visual Basic 6



What are you going to learn out of this guide?

You are going to learn how to code correctly in Visual Basic.

And maybe pickup a thing or two you did not know before.

I am assuming that you are able to pick a control from the toolbox

and placing it on the form and setting its properties.

I broke up the guide into four parts.

Part1 – The Basics involving writing good code and formats.

Part2 – The Code basic visual basic commands.

Part3 – Advanced Visual Basic – Dealing with Api’s and a lot of cool things.

Part4 – Extra Goodies

Part 1A: The Basics

An important of being a good Visual Basic programmer is using good names for your files and your controls. It may seem like extra work but in the long run, it will enable you to code faster and allow yourself and others to understand your own code better.

A rule I use for prefixes is to keep the prefix in lowercase then uppercase the first letter of the name of the control or file.

Prefixes for files:

prj = Project

frm = Form

mod = Module

cls = class

usr = user control

Prefixes to Common Controls

lbl = Label control

cmd = Command button

img = Image control

pic = Picture box

tmr = Timer

shp = Shape

chk = Checkbox

lst = Listbox

txt = Textbox

opt = Option button (Radio button)

hs = Horizontal scrollbar

vs = Vertical scrollbar

cbo = Combo box

mnu = Menu

sck = Winsock

Bad Names do not use!





Good Names





Prefixes can also be very useful to you when you are writing out code.

str = String

lng = Long

int = Integer

sng = Single

bln = Boolean

var = Variant

Bad Example:

dim stuff as string

stuff=inputbox(“Please enter your name”)

Good example:

dim strName as String

strName = inputbox(“Please enter your name”)

Part 1B. Making your code readable part 2.

You have already learned how prefixes can help making coding faster and easier.

Now lets move on to comments and indenting!

One of the worst things around is finding code that is not indented and or no white space.

Bad Example

sub ProcessNumber(ByRef intNumber as integer)

if intnumber= 3 then


if intNumber = 4 then

end if

end if

End Sub

Good Example:

sub ProcessNumber(ByRef intNumber as integer)

If intnumber= 3 then


If intNumber = 4 then

End If

End If

End Sub

When do you indent?

You also tab once when you begin to code in an event or subroutine.

Then for each if statement, loop, you also indent.


Visual Basic comments begin with ‘ and can go anywhere that you want

They are useful in explaining your code to yourself and others.

I really wish VB had multi line comments like in C++ but it is not too bad.

White Space:

Leaving white space makes your code easier to read and makes it look cleaner

Part 2: The Code

The fun stuff begins now.

The very first line in all your forms and modules should be

Option Explicit

What does Option Explicit do?

Well it forces you to declare all your variables with otherwise would make them all the variant type.

Example so you can not do:

for i=0 to 100

next i

You have to first have i declared

Dim i as byte

for i=0 to 100

next i


What are Variables? They hold data that may change when you run your program

Byte = holds numbers from 0 to 255

String = holds characters or letters such as “Hello World! and numbers too 123456789″

Integer= numbers no decimals from -32,768 to 32,767

Long = numbers no decimals from -2,147,483,647 to 2,147,483,647

Single = Can hold decimal numbers 32bit

Boolean = holds either True or False


What are constants? They hold data that does not change.

An example of a constant would be

private const Pi = 3.14


What does Private mean?

Private means it can only be accessed in the current form, module, or class.

What does Public and Global mean?

Public means it can be accessed from any form, module, or class


If you make a variable static it will save its value the next time the sub is run.

IF Then statements

One line if then statement

If condition=True then blnSomething=true

Multi Line if then statement

If condition=true Then

‘Your code goes here

End If

Complex IF then else statements

If condition=True Then



End If

If condition=true Then

ElseIf contition2 = True Then

End If

Select Case Statment:

Like the switch statement in c++

What is it good for?

It is good for instances when you have one variable and

do not want to have a million if then statements.


Dim intNumber as integer

select case intNumber

case 1:

case 2:

case else:

end select


For Next Loop

Syntax for

For i = 0 to 100 step 100


Do While

Do Until

Subs and Functions overview of ByVal and ByRef

By default all visual basic parameters are passed by reference which means you are passing

the memory address and not the value.

sub Test()

dim strReturnValue as string

call Test2(strReturnValue)

msgbox strReturnValue

end sub

sub Test2(strRef as String)

strRef=”Hello World”

end sub

What is a Function? A function is a special kind of procedure that returns a value for instance

sub Main

msgbox AddNumbers(3,4)

end sub

private function AddNumbers(ByVal intNumber1 as integer, ByVal intNumber2 as integer) as integer

AddNumbers = (intNumber1 + intNumber2)

end function

In the example above it shows a message box with the result of 7

You can specify how you want to pass a parameter either by reference (byRef)

or by value (byVal) You want to use pass by value when you are not going to change the parameter.

sub Example(ByRef strRef as string, ByVal intNumber as integer)

end sub

Some Quick Reference:

All Visual Basic functions and commands are listed in the object browser.

It looks like a box with things coming out of it in the toolbar.

Use App.path instead of hardcoded paths.

App.path returns the path to your application

You can use app.previstance to detect if your application is already running.

Part 3: Advanced Visual Basic Information

Section A: Understanding API’s

Your guide for Visual Basic Api’s is []

Once you vist

Get Api Viewer 2004 lists tons of VB Api’s

Get Api Guide has many Api’s and examples of how to use them.

Converting C++ Api’s to Visual Basic Api’s

VB Integers = C++ Short

VB Longs = C++ Integers

Section B: Pointers

There is a common myth going around that Visual Basic does not support pointers.

This is untrue they are just hidden.




AddressOf – Used for finding addresses of procedures

Section C: Understanding VB’s binary data.

Visual Basic stores a string in the following format

Length as integer

Text as String

Bytes take up 1 byte of data.

Boolean takes up two bytes either 00 00 or FF FF

Integer’s take up two bytes.

Long takes up four bytes.

Single takes up four bytes.

Double takes up eight bytes.

Section D: Reverse Engineering Visual Basic VB (5/6)

For the last couple of months this has been the area I have been working on.

For Visual Basic 6 exe’s there are two methods of compiling either Native or P-code.

P-Code is pretty easy to understand since all the opcodes are known and it is just

matter of figuring out which opcode does what and linking the imports of the exe.

Native on the other hand is tricky it involves converting assembly to visual basic code.

check out [] – Visual Basic Decompiler forum

for more information.

Section E: Compiling real Dll’s in Visual Basic like C++

By default Visual Basic does not make dll’s with exports, they just make active x dll’s.

But you can make them in Visual Basic if you can intercept the compiling process.

You can make your own c2.exe to intercept the parameters being passed to the real c2.exe then pass that

information plus the def file to create a normal dll with real exports.

Section F: Debugging/Decompiling

Tips I like to use Debug.print or use a msgbox statement to see what’s going on in my code.

SmartCheck – excellent tool for debugging a compiled exe.

Visual Basic Decompiler list:

Semi VB Decompiler –

VB Parser 1.2


VB Reformer


VB Editor



Section G: Choosing your compiling type.

Visual Basic Offers two ways to compile your application either Native or P-Code


Is faster

Harder to Decompile

Is larger



Easier to Decompiler

Smaller exe’s

Part 4: Extra Goodies

Section A: Links! – Best place to look for visual basic code. – dealing with Visual Basic Games

[] – Visual Basic Decompiler forum – my site for VB – Excellent community of knowledgeable people


Source by Jonathan Valentin

Share on facebook
Share on google
Share on twitter
Share on linkedin
Share on pinterest
Share on whatsapp

Leave a comment

Your email address will not be published. Required fields are marked *



Recent Posts