Variables in VBScript are variants by default. Because of this, variables can be coerced into any data type at any time. For example, the following code is completely legal in VBScript:
Dim MyVariant
MyVariant = 53
MyVariant = "Hello World"
In this example, MyVariant is first coerced into an integer, and then it is coerced into a string. Below is a complete list of available Data Types in VBScript.
Data Type | Coercion Function | Test Function | VarType() return value | TypeName() return value |
---|---|---|---|---|
Empty | n/a | IsEmpty() | 0 (vbEmpty) | Empty |
Null | n/a | IsNull() | 1 (vbNull) | Null |
Integer | CInt() | isNumeric() | 2 (vbInteger) | Integer |
Long | CLng() | isNumeric() | 3 (vbLong) | Long |
Single | CSng() | isNumeric() | 4 (vbSingle) | Single |
Double | CDbl() | isNumeric() | 5 (vbDouble) | Double |
Currency | CCur() | isNumeric() | 6 (vbCurrency) | Currency |
Date | CDate() | isDate() | 7 (vbDate) | Date |
String | CStr() | n/a | 8 (vbString) | String |
Object | n/a | isObject() | 9 (vbObject) | Object |
Error | n/a | n/a | 10 (vbError) | Error |
Boolean | CBool() | n/a | 11 (vbBoolean) | Boolean |
Variant | CVar() | n/a | 12 (vbVariant) | Variant |
Decimal | n/a | isNumeric() | 14 (vbDecimal) | Decimal |
Byte | CByte() | isNumeric() | 17 (vbByte) | Byte |
Array | n/a | isArray() | 8192 (vbArray) | Array |
The Coercion Function in the second column of this table is the function that you would use to force your variable to become a certain data type. For example, if I wanted to store the number 12 as a string, I could use the CStr() function as follows:
Dim MyString
MyString = CStr(12)
The test function in the third column returns a true or false value stating whether or not the provided variable is of that data type.
Both VarType() and TypeName() from the forth and fifth columns of the table are used to determine what data type a particular variable is. The only difference is that VarType() returns an integer (which can then be checked using the constant in parenthesis) and TypeName returns a String. As an example, the following two scripts have the same output.
Dim MyString
MyString = "Hello world"
MsgBox(TypeName(MyString))
Dim MyString
MyString = "Hello World"
If VarType(MyString) = vbString Then
MsgBox("String")
End If