用户定义类型的 VarType

Posted

技术标签:

【中文标题】用户定义类型的 VarType【英文标题】:VarType for user defined type 【发布时间】:2013-08-07 18:17:04 【问题描述】:

我的 VBA 代码中有一些用户定义的对象,我想知道是否有一种方法可以检查对象类型是什么。有点像

Dim myObject as Variant
Set myObject= New Employee

     If(myObject isType Employee)
           Do Something
      Else
           Do something else

我在考虑 VarType() 函数,但它显然不适用于用户定义的类型。还有什么我可以用的吗?

【问题讨论】:

“用户定义的对象”是指“类”? 【参考方案1】:

这样做有两种可能性。下面的代码应该解释一切。看看里面的一些额外的 cmets:

Sub qTest()

    Dim myObject As Variant
    Set myObject = New Employee

    'return results to Immediate
    Debug.Print TypeName(myObject) '>> will return class name
    Debug.Print TypeOf myObject Is Employee '>>will return true

    'using with 'if statements', both will return true 
    If TypeName(myObject) = "Employee" Then
        MsgBox "OK"
    End If

    If TypeOf myObject Is Employee Then
        MsgBox "OK"
    End If

End Sub

【讨论】:

【参考方案2】:

我相信您正在寻找TypeOf。使用上面的示例,可以按如下方式使用:

Dim myObject as Variant
Set myObject= New Employee

If TypeOf myObject is Employee Then
    Do Something
Else
    Do SomethingElse
End If

【讨论】:

以上是关于用户定义类型的 VarType的主要内容,如果未能解决你的问题,请参考以下文章

用户自定义的数据类型使用啥来说明关键字说明

与预定义类型的用户类型强制转换

用户定义表类型的缓冲区格式

C#编程(四十一)----------用户定义的数据类型转换

运行代码时出现用户定义类型未定义错误

用户定义类型的 VarType