Vba 确定对象类型

Vba 确定对象类型,vba,object,ms-access,Vba,Object,Ms Access,在向函数传递引用时,是否有方法确定对象类型 我使用的是安全权限函数,它确定用户是否有权限查看/编辑通过引用传递给它的表单。我想把它扩展到包括报告 为了保持函数的通用性,我想将表单或报表的ref作为对象传递,例如: 函数gfSecurity\u权限(obj作为对象) 但是,我需要确定函数中对象的类型 有人知道这样做的方法吗 MTIA看看 通用对象变量(即声明为对象的变量) 可以保存来自任何类的对象。使用Object类型的变量时, 您可能需要根据应用程序的类采取不同的操作 对象例如,某些对象可能不

在向函数传递引用时,是否有方法确定对象类型

我使用的是安全权限函数,它确定用户是否有权限查看/编辑通过引用传递给它的表单。我想把它扩展到包括报告

为了保持函数的通用性,我想将表单或报表的ref作为对象传递,例如:
函数gfSecurity\u权限(obj作为对象)

但是,我需要确定函数中对象的
类型

有人知道这样做的方法吗

MTIA

看看

通用对象变量(即声明为对象的变量) 可以保存来自任何类的对象。使用Object类型的变量时, 您可能需要根据应用程序的类采取不同的操作 对象例如,某些对象可能不支持特定的 属性或方法。VisualBasic提供了两种确定 对象变量中存储了哪种类型的对象:TypeName 函数和…的类型是运算符

TypeName和TypeOf…是
这个 TypeName函数返回一个字符串,是在 需要存储或显示对象的类名,如 以下代码片段:

Dim Ctrl As Control = New TextBox  
MsgBox(TypeName(Ctrl))
TypeOf…Is运算符是测试对象的 类型,因为它比等效字符串比较快得多 使用TypeName。下面的代码片段使用TypeOf…在 如果…那么…Else语句:

If TypeOf Ctrl Is Button Then  
    MsgBox("The control is a button.") 
End If

确定access中的访问类型的最简单方法是在access的系统表中进行对象查找

以下是查找:

DLookup("Type","MSysObjects","NAME = '" & strObject & "'")
strObject
是Access中对象的名称

1 = Access Table
4 = OBDB-Linked Table / View
5 = Access Query
6 = Attached (Linked) File  (such as Excel, another Access Table or query, text file, etc.)
-32768 = Access Form
-32764 = Access Report
-32761 = Access Module
结果是下面的数字之一,如果Access中不存在对象,则为NULL

1 = Access Table
4 = OBDB-Linked Table / View
5 = Access Query
6 = Attached (Linked) File  (such as Excel, another Access Table or query, text file, etc.)
-32768 = Access Form
-32764 = Access Report
-32761 = Access Module
因此,dlookup将为表单提供“-32768”,或为报告提供“-32764”
希望有帮助

在Access VBA中找不到任何关键字类型的引用。怀疑这只是.NET。是Access VBA中TypeName函数的MSDN引用。顺便说一句,这可能很方便:a。@simon,它是一个运算符,我想它出现在所有版本的VBA中@加比:我认为你提供的参考是针对VB.NET的,而不是VBA。当我查找TypeOf的引用时,我只能找到VB.NET的文章,找不到VBA的任何内容。也许这个链接也有用:事实上,提到TypeOf“operator”在帮助中没有自己的部分可能会有所帮助。相反,Access VBA帮助将其引用为与If…Then…Else语句位于同一节中的“If TypeOf”构造。此方法仅适用于Access对象,不会返回控件类型。TypeName返回访问对象类型和控件类型。