There is a bunch of data type we can handle with VBA, but looking at a variable value it will not get us to the type of value it is. From
Ms Online help we can get the constant values returned by the function VarType(). So we can make a table like this one:
Data Type |
Bytes Used |
Range of Values |
Const value |
Constant |
Byte |
1 |
0 to 255 |
17 |
vbByte |
Boolean |
2 |
true or False |
11 |
vbBoolean |
Integer |
2 |
-32,768 to 32767 |
2 |
vbInteger |
Long |
4 |
-2,147,483,648 to 2,147,483,647 |
3 |
vbLong |
Single |
4 |
-3.402823E38 to 1.401298E45 |
4 |
vbSingle |
Double (negative) |
8 |
-1.79769313486232E308 to -4.94065645841247E-324 |
5 |
vbDouble |
Double (positive) |
8 |
4.94065645841247E-324 to 1.79769313486232E308 |
5 |
vbDouble |
Currency |
8 |
-922,337,203,685,477.5808 to 922,337,203,685,477.5807 |
6 |
vbCurrency |
Date |
8 |
1/1/100 to 12/31/9999 |
7 |
vbDate |
String |
1 per character |
Varies according to the number of characters |
8 |
vbString |
Object |
4 |
Any defined object |
9 |
vbObject |
Variant |
Varies |
Any data type |
12 |
vbVariant |
Used defined |
Varies |
Varies |
36 |
vbUserDefinedType |
Although, there are some Const values that do not strictly correspond to data types, mainly related to functions (IsArray, IsEmpty, IsError, IsNull, IsArray), or near to databases (DataObject):
Constant |
VBA7 |
Value |
vbArray |
|
8192 |
vbDataObject |
|
13 |
vbDecimal |
Decimal |
14 |
vbEmpty |
|
0 |
vbError |
|
10 |
vbLongLong |
LongPtr |
20 (only on implementations that support a LongLong value type) |
vbNull |
|
1 |