在Access VBA中传递对象类型

时间:2014-03-07 16:21:26

标签: vba ms-access access-vba

我想将MS Access对象的类型传递给函数。从earlier question我知道您可以使用 TypeOf ... 来测试TableDef,form,QueryDef等类型。但我不知道结果的类型是什么以及如何将它们传递给无法访问原始对象的新函数。

我希望能够传递类似CStr(TypeOf( object ))的内容,但TypeOf似乎无法在TypeOf ... is语句之外调用。

我想我可以创建一个辅助函数来测试我感兴趣的对象类型并返回一个字符串或枚举。但如果有人知道如何传递对象类型,那就简单多了!

2 个答案:

答案 0 :(得分:2)

我不确定你想要什么,但想知道TypeName()是否有用。

以下是立即窗口会话的一些示例:

? TypeName(CurrentDb.TableDefs("tblFoo"))
TableDef

? TypeName(CurrentDb.QueryDefs("qryFoo"))
QueryDef

DoCmd.OpenForm "Form3"
? TypeName(Forms!Form3)
Form_Form3

? TypeName(Forms!Form3!cboUserId)
ComboBox

答案 1 :(得分:0)

显然已经存在Access对象类型的枚举:acObjectType枚举,在MSDN上描述。例如,这在application.sethiddenattribute方法中使用。不幸的是,我在创建自己的enum之后才发现了这个问题。我正在写一个不同的程序。