Home > Articles

  • Print
  • + Share This
This chapter is from the book

This chapter is from the book

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:

    String—This 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"

    Date—This 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#

    Integer—This 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

    Long—This 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

    Boolean—This type holds Boolean values, which take one of two values: True or False. Here's an example:

    Dim documentSaved As Boolean
    documentSaved = False

    Currency—This type holds monetary values. The value range is from –922,337,203,685,477.5808 to 922,337,203,685,477.5807.

    Single—This 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

    Double—This 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)
  • To specify the data type of the return value for a Function procedure, use the As keyword at the end of the Function statement:
  • Function HypotenuseLength(x, y) As Single
  • + Share This
  • 🔖 Save To Your Account