Subprograms and Functions in Visual Basic

by Herbert J. Bernstein

© Copyright 1999 Herbert J. Bernstein

 

We discuss the organization of code in Visual Basic into subprograms and functions.

The natural structure of a Visual Basic program is as independent sections of code delimited by "Private Sub ObjectName_Event" and "End Sub" statements. Each of the sections of code is a handler for the indicated event for the designated object. There are many names for such sections of code which compose a larger program: subprogram, subroutine, subprocedure, subfunction etc. Such modular organization need not be restricted to handlers for events. Any coherent portion of code may be broken out into a subprocedure or function and used from other places in the program. An event handler is an example of a subprocedure. A function differs from a subprocedure in being able to return a value.

 

A subprocedure is of the form

Private Sub Procedurename() Statement
End Sub
or Private Sub Procedurename( argument AS type, …) Statement
End Sub

A function is of the form

Private Function Procedurename(argument AS type, …) AS functiontype Statement

Procedurename = …

End Function

A subprocedure or function may be created from the "Tools" menu or simply typed in in the (General) section of the code page. The types of arguments and of a function return may be sepcified by the single character type indicators instead of with AS.

Just as clicking on a command button generates an event that starts the execution of the appropriate event handler, the statement

Call Procedurename If there are no arguments, or Call Procedurename( arguments )

If there are arguments starts the execution of the subprocedure. Once the subprocedure has run, execution continues at the statement after the call. The number of arguments in the call should match the number of arguments in the declaration, and while Basic will do some conversions automatically, it is best if the types match as well.

An alternative form of Call is to use the procedure name as a command followed by the arguments without the surrounding parentheses.

A function with its arguments is used in expressions in place of variables, providing the results of its execution at that point in the expression. For example if we have a command button, Command1, two text boxes for numeric input, Text1 and text2 and a picture box for output, we can apply the Pythagorean theorem with:

Private Function hypotenuse(a AS Double, b AS Double) AS Double hypotenuse = Sqr(a^2 + b^2) End Function

Private Sub Command1_Click()

Picture1.Cls
Picture1.Print hypotenuse(Val#(Text1.Text),Val#(Text2.Text))
End Sub

We have used the built-in function Sqr. There are several useful built-in functions, some of which are given in the following table:

 

 

Abs(arg)

Absolute value of arg

Asc(str$)

ASCII numeric code for the first character of str$

Atn(arg)

Arctangent of arg

Chr$(arg)

One character string for which arg is the ASCII numeric code

Ctype(arg)

Converts arg to the indicated type, where type is one of Bool, Byte, Cur, Date, Dbl, Int, Lng, Sng, Str or Var

Cos(arg)

Cosine of arg in radians

Exp(arg)

e to the power arg

Fix(arg)

Integer part of arg (by truncation)

Format (arg,str$)

String derived from arg using format string str$

Hex$(arg)

String representing arg as hexadecimal

InStr(str$,probe$)

Position of probe$ in str$ or 0

InStr(offset, str$,probe$)

As with Instr, but starting at offset

Int(arg)

Largest integer <= arg

Left$(str$,n)

Leftmost n characters of str$

Len(str$)

Length of str$

Log(arg)

Natural logarithm of arg

Mid$(str$,offset, n)

Substring of str$ of length n starting at offset. May be usede as the left hand side of an assignment

Oct$(arg)

String representing arg as octal

Right$(str$,n)

Rightmost n characters of str$

Rnd

Random number from 0 to 1

Sgn(arg)

-1 if arg is negative, 0 is arg is zero, 1 if arg is positive

Sin(arg)

Sine of arg in radians

Space$(n)

String os n spaces

Sqr(arg)

Square root of arg

Str$(arg)

String representing the number in arg

Tan(arg)

Tangent of arg in radians

Val(str$)

Number represented by str$

 



Last Updated on 24 October 1999
By Herbert J. Bernstein
Email:
yaya@bernstein-plus-sons.com