The Concept of Variables
In Excel VBA,
variables are areas allocated by the computer memory to hold data. Each
variable must be given a name. To name a variable in Excel VBA, you have to
follow a set of rules, as follows:
a) Variable Names
The following
are the rules when naming the variables in VBA
- It must be less than 255 characters
- No spacing is allowed
- It must not begin with a number
- Period is not permitted
Examples of
valid and invalid variable names are displayed in below table
Examples of valid and invalid variable names:
b) Declaring Variables
In VBA, we
need to declare the variables before using them by assigning names and
data types.
There are many VBA data types, which can be grossly divided into two
types, namely
the numeric data types and the non-numeric data types.
i) Numeric Data Types
Numeric data
types are types of data that consist of numbers, which can be
computed
mathematically with various standard arithmetic operators such as Addition,
Subtraction,
Multiplication, Division and more. In VBA, the numeric data are divided
into 7 types,
which are summarized shown in below table.
Numeric Data Types:
ii) Non-numeric Data Types
Nonnumeric
data types are summarized in below table
You can
declare the variables implicitly or explicitly. For example, sum=text1.text
means that
the variable sum is declared implicitly and ready to receive the input in
textbox1.
Other examples of implicit declaration are volume=10 and label=”Dreams”.
On the other
hand, for explicit declaration, variables are normally declared in the
general
section of the code window using the Dim statements. Here is the syntax:
Dim variable_name as DataType
Example:
Dim Dreams As String
Dim eName As String
Dim fNumber As Integer
Dim sNumber As Integer
Dim sumAll As Integer
Dim bDate As Date
You may also
combine them into one line, separating each variable with a comma, as
follows:
Dim Dreams As String, eName As String, fNumber As Integer.
If the data
type is not specified, VBE will automatically declare the variable as a
Variant. For
string declaration, there are two possible formats, one for the variablelength
string and
another for the fixed-length string. For the variable-length string, just
use the same
format as mentioned above. However, for the fixed-length string, you
have to use
the format as shown below:
Dim VariableName as String * n
Where n
defines the number of characters the string can hold. For example, Dim
yourName as
String * 10 mean eName can hold no more than 10 Characters.
In this
example, we declared three types of variables, namely the string, date and
currency.
Private Sub CommandButton1_Click()
Dim fName As String, bDate As Date, Salary As Currency
fName = "ABC"
bDate = "23 Nov
1981"
Salary = 1000
Range("A1")
= fName
Range("A2")
= bDate
Range("A3")
= Salary
End Sub
The use of Option Explicit
The use of
Option Explicit is to help us to track errors in the usage of variable names
within a
program code. For example, if we commit a typo, VBE will pop up an error
message “Variable
not defined”. Indeed, Option Explicit forces the programmer to
declare all
the variables using the Dim keyword. It is a good practice to use Option
Explicit
because it will prevent us from using incorrect variable names due to typing
errors,
especially when the program gets larger. With the usage of Option Explicit, it
will save us
time in debugging our programs.
When Option
Explicit is included in the program code, we have to delare all variables
with the Dim
keyword. Any variable not declared or wrongly typed will cause the
program to
popup the “Variable not defined” error message. We have to correct the
error before
the program can continue to run.
This example
uses the Option Explicit keyword and it demonstrates how a typo is
being
tracked.
Option Explicit
Private Sub CommandButton1_Click()
Dim myName As String, pass As String
myName =
"John"
pass = 12345
Cells(1, 2) = myNam
Cells(1, 3) = pass
End Sub
The typo is myNam and the error message ‘variable
not defined” is displayed .
Assigning Values to the Variables
After
declaring various variables using the Dim statements, we can assign values to
those
variables. The general format of an assignment is
Variable=Expression
The variable
can be a declared variable or a control property value. The expression
could be a
mathematical expression, a number, a string, a Boolean value (true or
false) and
more. Here are some examples:
firstNumber=100
secondNumber=firstNumber-99
userName="John Lyan"
userpass.Text = password
Label1.Visible = True
Command1.Visible = false
ThirdNumber = Val(usernum1.Text)
total = firstNumber + secondNumber+ThirdNumber
Performing Arithmetic Operations in Excel VBA
In order to
compute input from the user and to generate results in Excel VBA, we can
use various
mathematical operators. In Excel VBA, except for + and -, the symbols
for the
operators are different from normal mathematical operators, as shown in below table.
Arithmetic Operators
Operator Mathematical function Example
Example:
Option Explicit
Private Sub CommandButton1_Click ()
Dim number1, number2, number3 as Single
Dim total, average as Double
number1=Cells (1, 1).Value
number1=Cells (2, 1).Value
number3= Cells (3, 1).Value
Total=number1+number2+number3
Average=Total/3
Cells (5, 1) =Total
Cells (6, 1) =Average
End Sub
In example
2.4, three variables are declared as single and another two variables are
declared as
variant. Variant means the variable can hold any numeric data type. The
program
computes the total and average of the three numbers that are entered into
three cells
in the Excel spreadsheet.
Example:
Option Explicit
Private Sub CommandButton1_Click()
Dim secondName As
String, yourName As String
firstName =
Cells(1,1).Value
secondName =
Cells(2,1).Value
yourName = firstName +
" " + secondName
Cells(3,1) = yourName
End Sub
In the above
example, three variables are declared as string. The variable firstName
and the
variable secondName will receive their data entered by the user into
Cells(1,1)
and cells(2,1) respectively. The variable yourName will be assigned the
data by
combining the first two variables. Finally, yourName is displayed on Cells (3,1).
Performing addition on strings will result in concatenation of the strings.
Names in A1 and A2 are joined up and displayed in A3.