访问VBA对象类型

时间:2013-12-18 17:45:13

标签: vba ms-access

我正在尝试在我的Access项目中构建一个过程,该过程将接受表或表单作为参数的一部分。如果对象是一个表,那么它应该检查表的字段;如果它是一个表格那么它应该是表格的控件。

我尝试使用变量或对象变量类型作为参数。但无论哪种方式,当我检查VarType()时,传递的变量是object类型,所以我无法区分它们。 (顺便说一句,我目前正在将一个表作为TableDef对象传递。)

我会尝试基于参数类型重载函数,但显然在VBA中不可用(据我所知Function Overloading and UDF in Excel VBA。有任何建议吗?

1 个答案:

答案 0 :(得分:2)

要在VBA中测试某个类,请使用TypeOfIs运算符的组合:

Sub WishVBAHadOverloads(ByVal Obj As Object)
  If TypeOf Obj Is TableDef Then 
    Dim Def As TableDef
    Set Def = Obj
    ' work with Def... 
    Exit Sub
  End If
  If TypeOf Obj Is Form Then 
    Dim Frm As Form
    Set Frm = Obj
    ' work with Frm... 
    Exit Sub
  End If
  Err.Raise 999, "WishVBAHadOverloads", "Bad argument type - expected a TableDef or Form"
End Sub