IT Computer Training Articles Tutorials - Submit Your Article - Articles Submission Directory. - http://www.articles.webtechvision.com
VB operators And Commands
http://www.articles.webtechvision.com/articles/150/1/VB-operators-And-Commands/Page1.html
Mike Tayler
 
By Mike Tayler
Published on 03/24/2007
 

Here are the VB operators And commands used to perform mathematical operations on one or more variables. Aside from the normal multiply/add/substract and divide, you will find the AND, OR, Not Equal, MOD and Integer Division operators very useful.


VB operators And Commands

/ - Normal division

\ - Integer division (truncates the answer)

^ - Exponentiation operator

* - Multiply

+ - Plus

- - Minus

= - Equal

> - Greater Than

< - Less Than

<> - Not Equal

>= - Greater than or equal

<= - Less than or equal

AND - Defines a boolean value that is the AND of two values

result = expression1 AND expression2

OR - Defines a boolean value that is the OR of two values

result = expression1 OR expression2

XOR - Defines a boolean value that is the exclusive OR of two values

result = expression1 XOR expression2

NOT - Defines an opposite boolean value

A = NOT B

EQV - Performs a logical equivalence on two expressions (result is true if both expressions are true)

result = expression1 EQV expression2

IMP - Performs a logical implication on two expressions

result = expression1 IMP expression2

IS - Determines if 2 variables reference the same object

result = object1 IS object2

LIKE - Determines if one string matches a pattern

result = string LIKE pattern

MOD - Returns the integer remainder of a division

i = 27 MOD 5

Math

VB also provides built-in functions which can act on variables. Most are self-explanatory. In my experience, the VAL, RND, and ROUND functions are among the most valuable, so be sure to pay close attention to them!

 

Round - Rounds a number to a selectable number of decimal places

result = round ( tempvariable,2 )

Val - Returns the numerical content of a string

result = Val ("123.4")

Int - Returns an integer by truncating (different than Fix)

i = int ( tempvariable )

Fix - Returns an integer by truncating (different than Int)

i = fix ( tempvariable )

Hex - Returns the hexadecimal value of any number

temp$ = hex ( tempvariable )

Oct - Returns the octal value of any number

temp$ = oct ( tempvariable )

Tan - Returns the tangent of an angle

tempvariable1 = tan ( tempvariable2 )

Rnd - Returns a random number between 0 and 1

tempvariable1 = rnd

Randomize - Initializes the Rnd function so it gives different answers each time

randomize

Sgn

Sgn - Returns the sign of a number

i = sgn ( tempvariable )

Sin - Returns the sine of an angle

tempvariable1 = sin ( tempvariable2 )

Cos - Returns the cosine of an angle

tempvariable2 = cos ( tempvariable )

Abs - Converts a number to a positive value

i = abs ( tempvariable )

Sqr - Returns the square root of a number

tempvariable1 = sqr ( tempvariable2 )

Log - Returns the base 10 logarithm of a number

tempvariable1 = log ( tempvariable2 )

Atn - Returns the arctangent of an angle

tempvariable1 = atn ( tempvariable )

Partition - Sort of an oddball function but segregates values according to ranges

 

Type Conversions - A variety of conversion functions

CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar

Strings

In my experience these functions are used more than just about any of the other VB built-in functions. The FORMAT, MID, and INSTR functions are incredibly powerful and I use them extensively. If you don't understand what they are, they are worth the time to figure out! The LEN and CHR functions are also valuable as are the variations on the trim and case functions.

 

Left - Returns the left n characters of a string

temp$ = left$ ( teststring$, 4 )

Right - Returns the right n characters of a string

temp$ = right$ ( teststring$, 4 )

Trim - Removes leading and trailing spaces of a string

temp$ = trim$ ( teststring$ )

LTrim - Removes only the leading spaces of a string

temp$ = ltrim$ ( teststring$ )

RTrim - Removes only the trailing spaces of a string

temp$ = rtrim$ ( teststring$ )

UCase - Makes all characters upper case

temp$ = ucase$ ( teststring$ )

LCase - Makes all characters lower case

temp$ = lcase$ ( teststring$ )

Mid - Returns n characters from a string, starting a any position

temp$ = mid$ ( teststring$, 1, 4 )

Len - Returns the length of a string (how many characters it has)

temp$ = len ( teststring$ )

LSet - Positions a string inside another, flush to the left

temp$ = lrset ( teststring$ )

RSet - Positions a string inside another, flush to the right

temp$ = rset$ ( teststring$ )

Format - Returns a string formatted according to a user-defined format

temp$ = format$ ( teststring$, "####.0" )

String -

temp$ = left$ ( teststring$, 4 )

Chr - Returns the string representation of a number

temp$ = str$ ( 32 )

Asc - Returns the ASCII code of a single character

temp$ = asc ( "A" )


Space

Space - Returns n spaces

temp$ = space$ ( 15 )

Instr - Determines if one string is found within a second string

i = Instr (starthere, string1, string2)

InStrRev - Determine if one string is found in a second, starting at the end

i = InStrRev (string1, string2, start)

StrComp - Compares two strings

result = StrComp (string1, string2)

StrConv - Converts the case of a string's characters

StrConv (string, vbuppercase)

StrReverse - Reverses character order in a string

StrReverse (string1)

Replace - Replaces each occurrence of a string

Replace (bigstring, searchstring, replacementstring)

FormatCurrency - Returns a string using a currency format

FormatCurrency(var1, 2)

FormatDateTime - Returns a date or time expression

FormatDateTime("3/2/99",vbShortTime)

FormatNumber - Returns a number formatted according to a variety of options

FormatNumber(var1, 2)

FormatPerCent - Returns a number formated as a percent

FormatPerCent(var1, 2)

Arrays

Every programmer eventually uses arrays. Mostly they're pretty easy to understand. Take note, however, that you can resize an array with REDIM without losing the data. For details, see the PRESERVE keyword in the HELP entry on REDIM. If you use the LBound/UBound in your code instead of hard-coding the dimension of the array, you can later change the size of the array without touching your code!

 

Option Base - Determines whether the lowest range of an array is 0 or 1

option base 1

Erase - Erases all values of an array

erase (arrayname)

Dim - Creates an array

dim arrayname(25)

Redim - Resets the bounds of an array (has option to save values)

redim arrayname(28)

UBound - Returns the upper dimension of an array

i = ubound (arrayname)

LBound - Returns the lower dimension of an array

i = lbound (arrayname)

Filter - Returns a subset of an array based on a filter

Filter (inputarray, searchstring)

Array - Yes, there is a function called array. It returns an array that has been filled with data from a list. It allows you to put the actual data values in the code to avoid having the user input it or to avoid having to read it from a file

ArrayName = Array (10, 20, 30)

Join - Concatenates strings within an array

File Handling (Generic)

While VB is working on a better approach (FileSystemObject), the built-in file handling statements are still the only way to access data other than through the VB database capabilities. Your skills in this area can make or break your ability to work with various formats. The OPEN/CLOSE statements are critical to success, but the LOF, EOF, and LEN functions are used even more often! It's also a given that you'll use the DIR function regularly.


Dir

Dir - Returns a filename that matches a pattern

temp$ = Dir ("*.*")

CurDir - Returns the current directory

temp$ = CurDir

MkDir - Creates a directory

mkdir ( "newdirectoryname" )

ChDir - Changes the current directory to a new location

chdir ( "newdirectoryname" )

ChDrive - Changes the current drive

ChDirve "A"

RmDir - Removes the indicated directory

rmdir ( "directoryname" )

Freefile - Returns an unused file handle

i = freefile

Open - Opens a file for access, locking it from other applications

open "filename" for input as #1

Close - Closes a file so that other applications may access it

close #1

LOF - Returns the length of a file in bytes

i = lof ( #1 )

EOF - Returns a boolean value to indicate if the end of a file has been reached

statusvariable = eof ( #1 )

Name As - Renames a file

name "filename1" as "filename2"

Kill - Deletes a file

kill "filename"

Fileattr - Returns attribute information about a file

i = int ( tempvariable )

GetAttr - Returns attributes of a file or directory

i = GetAttr("c:\windows\temp")

SetAttr - Sets the attributes of a file

SetAttr pathname, vbHidden

Reset - Closes all disk files opened by the OPEN statement

Reset

FileDateTime - Returns data file was created or last edited

FileDateTime ( filename )

FileLen - Returns length of file in bytes

FileLen ( filename )

FileCopy - Copies a file to a new name

FileCopy sourcefile, destinationfile

Lock - Controls access to a part or all of a file opened by OPEN

Lock #1

UnLock - Restores access to a part or all of a file opended by OPEN

UnLock #1

Width # - Set the output line width used by the OPEN statement

Width #2, 80

File Handling - ASCII-specific

While VB is working on a better approach (FileSystemObject), the built-in file handling statements are still the only way to access data outside of a data base. Your skills in this area can make or break your ability to work with various formats. The OPEN/CLOSE statements are critical to success, but the LOF, EOF, and LEN functions are necessary to build useful code.

 

Line Input - Reads an entire line of ASCII text

line input #1, tempvariable$

Write - Puts data in a file, with separators for the data

write #1, tempvariable$


Print

Print - Puts data in a file with no separators

print #1, tempvariable$

Spc - Used in a print statement to move a number of spaces

Print #2, var1; spc(15); var2

Tab - Used in a print statement to move to TAB locations

Print #2, var1; Tab(20); var2

File Handling - Binary-specific

VB also support features which allow you to access a file on a byte-by-byte basis. The good thing about it is that you have more control, the bad thing is that you may have to write more code. Generally, a programmer will use the option (ASCII or Binary access) according to the least code he has to write. For binary access the Get/Put are equivalent to the Line Input and Print functions used in ASCII text file access. The big difference between the two is that binary access will read (Get) an exact number of bytes of data, and the reading can start at any byte within the file.

 

Get - Reads data from a file

get #1, anyvariable

Put - Puts data into a file

put #1, anyvariable

Seek - Moves the current pointer to a defined location in a file

seek #1, 26

Input

input #1, anyvariable

Loc - Returns current position with an open file

i = Loc(#2)

Declarations

I probably get more questions about the functions in this section than about any other group. In general, the concepts are pretty simple, but the details of getting it exactly right can cause even experienced programmers trouble. Focus on understanding Dim/ReDim/Public/Private/Sub/Function/Type and Set. However, they're all useful at times, so bear down and commit these to memory. I'll try to add more text and tips on these than I have on the others.

 

Dim - Used to define a variable as a certain type

i = dim i as integer, r as single

You can use the Option Explicit to make sure that VB forces you to declare every variable you use. DIM is that simplest way to declare a variable

ReDim - Used to change the dimensions of a dynamic array

redim arrayname(37)

Don't be afraid of this one. You can use ReDim to create an array whose size grows by 1 every time you want to add a number to it. Then, the UBound tells you how many numbers you've added.

Static - Establishes a procedure variable which keeps its value between calls

static i as integer

For example, if you want to keep track of how many times you've been in a procedure, set a counter as STATIC and increment it by one for each visit to the procedure. It will never go away until the program is terminated.

Public - Creates a variable which can be accessed outside its own procedure

public i as integer

Even if you're the only programmer writing code in your application, use of Private vs Public will help catch errors if you inadvertently try to access an out-of-scope variable

Private - Creates a variable that can be read only in its own procedure or module, according to where the declaration took place.

private i as integer

Use this as often as possible to avoid unnecessary exposure of your variables to coding mistakes.


Sub

Sub - Defines a procedure which can execute a block of code

Sub NewProcedure (var1 as integer, var2 as string)

Be sure to check out HELP for how to handle Sub arguments. There are more questions and mistakes made concerning the use of arguments than just about anything else I've seen.

Function - Declares a procedure which can return a value

Function NewFunction (var1 as integer, var2 as string) as SINGLE

This is actually the most versatile of the Sub/Function procedure types. It can do anything a Sub can do as well as returning a value for use in an expression.

Call - Transfers control to a Sub or Function (is optional)

Call Procedure 1

Since the use of CALL is optional, forget you ever saw it

CallByName - Executes a method of an object or set/returns a property

CallByName(form1,procedurename,vbMethod)

The really cool thing about this is that you don't have to hardcode a procedure call. Just use a string variable with the name of the procedure to call.

Option Explicit - Instructs VB to force an explicit declaration of all variables

Option Explicit

You're borderline stupid if you don't use it to catch typing errors. Set up the VB IDE to automatically include this in all projects.

Option Compare - Instructs VB on how to make string comparisons

Option Compare Binary

This can add case-insensitivity for those times when you don't want to hard-code it

Option Private - Prevents a module's content from being referenced outside a project.

Option Private Module

Generally doesn't apply to most VB applications. If you find a good use for it let me know.

Property Get - Declares how to get the value of a property

Property Get Name()

You won't use this much until you get into creating classes of your own

Property Let - Declares how to assign a value to a property

Property Let Name()

You won't use this much until you get into creating classes of your own

Property Set - Declares how to set a variable reference to an object

 

You won't use this much until you get into creating classes of your own

Set - Assigns an object reference to a variable

Set X = form1.txtInputFromUser

Very useful for making code more readable or simply to cut down on how much typing you have to do!

Let - Precedes assignment of a value to a variable

Let i = 3

It's optional, no one uses, so forget you ever saw it

Type...End Type - Creates a user defined part type which consists of standard VB data types

type anytypename

one as string

two as integer

three as boolean

End Type

This is a really excellent way to keep several kinds of data under one variable name. Plus, you can PUT or GET a user-defined type with a single line of code.

Const - Creates a variable whose value is fixed

const anyname

Basically, use this to give easy to remember names to values. For example, suppose you use the value 37.2 a lot in your code, then if you put CONST MyAge = 37.2 in your code you'll be able to insert the MyAge where the 37.2 should have gone. Easier to type and easier to read. Also, you can chane the value of the constant by changing only the declaration line of code, rather than searching out every place the value was used!

Declare - Used to define a procedure that exists in another file

declare functionname (arg1 as integer, arg2 as string) as integer

ArrayName

ArrayName = Array (10, 20, 30)

Implements - Specifies a class to be implemented in a module

 

Friend - Allows procedure to be callable from modules outside the class

 

GetObject - Return a reference to an ActiveX component

 

CreateObject - Creates and returns a reference to an ActiveX object

 

GetAutoServerSettings - Returns information about the state of an ActiveX component's registration.

 

Enum - Declares a type for an enumeration

 

Event - Declares a user-defined event

 

TypeName - Returns the type of data in a variable

 

VarType - Returns the type of data in a variable

 

DefType - Sets the default data type of variables

DefInt A-Z

IS - A variety of data type or status checking options

IsArray, IsBindable, IsBroken, IsDate, IsDirty, IsEmpty, IsError, IsMissing, IsNull, IsNumber, IsObject, IsReady, IsRootFolder

Date/Time

These functions are pretty self-explanatory so I've not added any extra comments to them.

 

Date - Gets the current date

Time - Gets the current time

Now - Gets the current date and time

Timer - Returns the number of seconds since midnight

DateAdd - Adds a time interval to a date

DateDiff - Returns how many time intervals there are between two dates

DateSerial - Returns the month/day/year

DateValue - Returns the date

Year - Returns the current year

Month - Returns the current month (integer)

MonthName - Returns the text of the name of a month

Day - Returns the current day

Hour - Returns the current hour

Minute - Returns the current minute

Second - Returns the current second

TimeSerial - Returns a date with the hour/minute/second

TimeValue - Returns the time

WeekDay - Returns the current day of the week (integer)

WeekDayName - Returns the text of a day of the week

Miscellaneous

In this list you'll find some of the features of VB about which I get a lot of email questions! The MsgBox is easily the most used of the bunch. It handles all of the "Y/N" queries to your user so get to know it well. Also, the DoEvents, Shell, and Command functions are indispensable in certain occasions so make sure you know when they should be used.


MsgBox

MsgBox - A built-in dialog box that gives a message and allows a user input

i = msgbox "Read this!", vbokonly, "Test Message"

DoEvents - Allows VB to complete pending tasks

doevents

Shell - Executes a 2nd program from within the current program

shell "notepad.exe"

Note - VB does not wait for the Shell'd program to quit before executing the next line of code!

Command - Gives any text that followed a VB .EXE execution command

temp$ = command

Environ - Returns the system environmental space content

temp$ = environ

Beep - Makes the computer beep once.

beep

InputBox - A built-in dialog box that allows entry of a text string

inputbox "Input a value!", 5

AddressOf - Provides an entry point for an external program to use a procedure

AddressOf ( procedurename )

AppActivate - Activates an applications window

AppActivate ( windowtitle )

RaiseEvent - Fires an event declared at module level

RaiseEvent ProcedureName

Load - Load an object

load form1

Unload - Unload an object

Unload form1

LoadPicture - Load a picture into a control property

form1.picture = loadpicture (filename)

SavePicture - Save a picture to a file

SavePicture(form1.picture,filename)

LoadResData - Load the data from a resource file

LoadResData(index,format)

LoadResString - Load a string from a resource file

LoadResString(index,format)

SendKeys - Send keys to another app as though they were from the keyboard

Sendkeys {DOWN}

QBColor - Returns a value corresponding to the original QB values 0-15

form1.backcolor = QBcolor (12)

RGB - Returns a color value by inputting the red, green, and blue parts

form1.backcolor = RGB (12,128,256)

Me - Refers to the current object, usually the active form

print Me.caption

Registry

I've never quite understood why Microsoft got away from the use of an INI file. The ability to use a simple text editor to resolve problems with a program's settings was a key feature about INI files. Also, no matter how Windows crashed, the INI file was protected.

 

Whining aside, VB has made it incredibly easy to access values in the registry. The following VB functions are simple to use and there's hardly any excuse for not taking advantage of them. One thing to remember is that the registry save strings so if you're saving or reading numeric information then may have to do some string manipulation with the results.


GetSetting

GetSetting - Get a value from the Registry

temp$ = getsetting "TestApp", "SectionName", "KeyName", "defaultvalue"

GetAllSettings -Returns a list of key settings and their values

GetAllSettings(appname,section)

SaveSetting - Save a value into the Registry

savesetting "TestApp", SectionName, KeyData

DeleteSetting - Deletes an entry from the registry

deletesetting "TestApp", "SectionName", "Keyname"

Loops and Conditional Decisions

While the event-driven model of VB has taken out a lot of the need for controlling the flow of your application, don't think for a second that you can get by without being an expert on these features of VB. Virtually every single procedure you'll ever write will have one or more of these in it. The concepts are simple, so take the time to become a master of each one! The For...Next and the Select Case statements are the two most used, so concentrate on them first.

 

If..Then..Else - Performs code based on the results of a test

If A>5 Then Print "A is a bit number!"

For...Next - Loops a specified number of times

For i = 1 to 5: print #1, i: next i

For Each ... Next - Walks through a collection

For Each X in Form1.controls: Next X

While...Wend - Loops until an event is false

while i < 5: i = i +1: wend

Select Case - Takes an action based on a value of a parameter

select case i

case 1 : print "it was a 1"

case 2 : print "it was a 2"

end select

Do...Loop - Loops until conditions are met

do while i < 5 : i = i + 1 : loop

IIF - Returns 1 of two parts, depending on the value of an expression

result = IIF (testexpression, truepart, falsepart)

Choose - Selects and returns a value from a list of arguments

Choose (index, "answer1", "answer2", "answer3")

With - Executes a series of statements on a single object

With textbox1

.Height = 100

.Width = 500

End With

End - Immediately stops execution of a program

End

Stop - Pauses execution of a program (can restart without loss of data)

Stop

Switch - Returns a value associated with the first true expression in a list

result = Switch (testvalue1, answer1, testvalue2, answer2)

GoTo - Switches execution to a new line in the code

GoTo Line1

GoSub ... Return - Switches execution to a new block of code and then returns

GoSub Line1

On .. GoSub - Branch to a specific line of code then return at the next Return statement

On Number GoSub Line1, Line2, Line3

On .. GoTo - Branch to a specific line of code

On Number GoTo Line1, Line2, Line3

Special Values

There are some keywords in VB which take on special meaning. Their use can be confusing at times, but you'll get used to the terminology as your programming experience grows.


True

True - A logical (Boolean) expression. In VB, its value is -1

X = TRUE

False - A logical (Boolean expression. In VB, its value is 0

X = FALSE

Nothing - Disassociates an object variable from an actual object

Set X = Nothing

Null - Indicates that a variable has no valid data

X = Null

Empty - Indicates that a variable has not yet been initialized

X = Empty

Error Handling

Try as I might, I cannot create error free code! So, I turn to these VB features to help me figure out what went wrong.

 

On Error - Enables an error-handling routine

On Error GoTo Line2 (if error occurs, go to line2)

On Error Resume Next (if error occurs, continue executing next line of code)

On Error Goto 0 (disables error handling)

Resume - Used to resume execution after a error-handling routine is finished

Resume

Resume Next

Resume Line1

CVErr - Returns an error type variable containing a user-specific error number

X = CVError(13)

Error - Simulates the occurrence of an error

Error 23

Financial Calculations

For those folks who want to use VB for performing routine investment calcuations, VB provides a variety of functions. Personally, I use them very infrequently, but I suspect they are used regularly by a lot of programmers. I've never gotten a single question in the mail about these functions!

 

DDB - Returns the depreciation of an asset for a specific time period

FV - Returns the future value of an annuity

IPmt - Returns the interest payment of an investment

IRR - Returns the internal rate of return on a cash flow

MIRR - Returns a modified internal rate of return on a cash flow

NPer - Returns a number of periods for an annuity

NPV - Returns a present value of an investment

PPmt - Returns the principal payment of an annuity

PV - Returns the present value of an annuity

Rate - Returns the interest rate per period for an annuity

SLN - Returns the straight-line depreciation of an asset

SYD - Returns the sum-of-years' digits depreciation of an asset.