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
A function is of the form
Procedurename =
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
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 Sub Command1_Click()
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: