在VBA脚本中如何获取对象或变量的数据类型?(附VBA示例代码)

在写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 数组
【版权说明:仅允许非商业转载且请注明出处:Mac私塾 网址:http://macsishu.com】

发表评论

邮箱地址不会被公开。

Captcha Code