在写VBA脚本时,有时候可能会需要去获取对象或变量的数据类型,一方面,可能是需要与其他类型的变量进行比较,另一方面,可能是需要根据变量的数据类型来确定变量的取值范围。
在VBA中,有不少基本的数据类型,如字符串(String)、整型(Integer)、货币型(Currency)、字节型(Byte)、日期型(Date)、变体型(Variant)等。这是VBA语言的基本数据类型。
另外,当一个变量只具有有限个取值的时候,还可以将变量定义为枚举类型。比如说,可以定义一个星期的枚举变量,保存周一~周日,或者定义一个性别的枚举变量,用来保存男、女、未知等性别。
其实,在VBA中,还支持用户自定义类型。也就是说,我们可以定义一个数据类型,它可以包含一个或多个基本数据类型或者其他的用户自定义类型。这有点类似于C++中的结构体。
而且 ,因为VBA语言与Excel文档深刻融合,当然还要支持一些Sheet、Workbook、Range等对象类型。
那么,VBA语言中有这么多的变量类型或者对象类型,我们如果获取它们的数据类型呢?
好在VBA提供了两个函数,可以返回变量或对象的数据类型。
(1)、TypeName()函数
用来返回变量或对象类型的字符串。
(2)、VarType()函数
用来返回用数字表示的变量或对象类型。不同的是,对于不同的对象,它统一返回对象类型,而不是像TypeName函数一样,返回不同的对象字符描述。
下面举个例子:
Sub 按钮1_Click() Dim sht As Worksheet Dim str As String str = "abc" Set sht = Worksheets("Sheet1") MsgBox TypeName(sht) MsgBox TypeName(str) MsgBox VarType(sht) MsgBox VarType(str) End Sub
上面的示例代码返回:
Worksheet String 9 8
对于VarType类型的返回值,列出如下表格供参考:
常数 | 值 | 描述 |
vbEmpty | 0 | Empty(未初始化) |
vbNull | 1 | Null(无有效数据) |
vbInteger | 2 | 整数 |
vbLong | 3 | 长整数 |
vbSingle | 4 | 单精度浮点数 |
vbDouble | 5 | 双精度浮点数 |
vbCurrency | 6 | 货币值 |
vbDate | 7 | 日期 |
vbString | 8 | 字符串 |
vbObject | 9 | 对象 |
vbError | 10 | 错误值 |
vbBoolean | 11 | Boolean 值 |
vbVariant | 12 | Variant(只与变体中的数组一起使用) |
vbDataObject | 13 | 数据访问对象 |
vbDecimal | 14 | 十进制值 |
vbByte | 17 | 位值 |
vbUserDefinedType | 36 | 包含用户定义类型的变量 |
vbArray | 8192 | 数组 |