Variable Data Types
The data type of a variable determines the kind of data the variable can hold. You specify a data type by including the As keyword in a Dim statement. Here is the general syntax:
Dim variableName As DataType
variableName is the name of the variable and DataType is one of the data types. Here's a rundown of the most useful VBA data types:
StringThis type holds strings, which are simple text values. Here's a sample declaration and an assignment statement (note the use of quotation marks in the assignment statement value; this tells VBA that the value is a string):
Dim newFileName As String newFileName = "Budget Notes.doc"
DateThis type holds date values, which refer to dates and/or times. Here are a few examples (note the use of the # character around the values; this tells VBA that the values are dates and/or times):
Dim myBirthDate As Date Dim myBirthTime As Date Dim anotherDate As Date myBirthDate = #8/23/59# myBirthTime = #3:02 AM# anotherDate = #4/27/04 16:05#
IntegerThis type holds integer values, which VBA defines as whole numbers between 32,768 and 32,767. Here's an example:
Dim paragraphNumber As Integer paragraphNumber = 1
LongThis type holds long integer values, which VBA defines as whole numbers between 2,147,483,648 to 2,147,483,647. Here's an example (note that you don't include commas in numbers that would normally use one or more thousands separators):
Dim wordCount As Long wordCount = 100000
BooleanThis type holds Boolean values, which take one of two values: True or False. Here's an example:
Dim documentSaved As Boolean documentSaved = False
CurrencyThis type holds monetary values. The value range is from 922,337,203,685,477.5808 to 922,337,203,685,477.5807.
SingleThis type holds single-precision floating point values, which are numbers that have a decimal component. Here's an example:
Dim averageUnitSales As Single averageUnitSales = 50.3
DoubleThis type holds double-precision floating point, which can accommodate much larger or smaller numbers than the Single type. Note, however, that the range available with the Single type should be more than enough for your VBA macros, so you'll probably never use the Double type. Here's an example:
Dim atomsInTheUniverse As Double atomsInTheUniverse = 2.0E+79
Double values often use exponential notation, such as the value 2.0E+79 used in the Double example. A positive number, say X, after the E symbol means that you move the decimal point X positions to the right to get the actual number. So, for example, 2.0E+3 is the same thing as 2000. A negative number, say X, after the E means that you move the decimal point X positions to the left. So 3.14E-4 is the equivalent of 0.000314.
Here are a few notes to keep in mind when using data types:
- If you don't include a data type when declaring a variable, VBA assigns the Variant data type. This enables you to store any kind of data in the variable. However, this isn't a good idea because Variant variables use more memory and are much slower than the other data types. Therefore, always give your variables a specific data type.
- If you declare a variable to be one data type and then try to store a value of a different data type in the variable, VBA will often display an error. For example, if you declare a variable using the Single type and you try to assign a value that's outside the Single type's allowable range, VBA will display an "Overflow" error message when you attempt to run the procedure.
- To specify the data type of a procedure argument, use the As keyword in the argument list. For example, the following Function statement declares variables x and y to be Single:
Function HypotenuseLength(x As Single, y As Single)
Function HypotenuseLength(x, y) As Single