有三种方式,特别是在互联网和论坛上进行讨论
How to check type of object in VB 6 - Is there any method other than 'TypeName'
How to check type of Object in VB 6 ? - I do not want to use 'TypeOf' method
How to check type of object in VB 6 - Is there any method other than 'TypeName'
即:
- 字符串方法TypeName
- 笨拙TypeOf
- 按控制名称,以特定符号
我是对的,没有内置工具来获得正常的数字常量,例如MsoControlType
?
答案 0 :(得分:8)
我是对的,没有内置工具来获取正常的数字常量,比如MsoControlType?
是的,这是正确的。除非您使用您已列出的技术实施自己的技术。
好吧,排除VarType
,在给定任何对象引用的情况下返回vbObject
。
你所指的是"正常的数字常数"与控件的类型完全无关 - 这些MsoControlType
常量只是Enum
API用于确定CommandBar值>当您要求创建一个控件时,键入。
MsoControlType.msoControlButton
不是类型的控件,它是一个值为1的常量。没有更多,没有更少 - 类型控件是一个类,而不是数字常量:
?TypeName(Application.VBE.CommandBars(1).Controls(1))
CommandBarPopup
CommandBarPopup
是类(因此是控件的类型),而不是msoControlPopup
,而不是10
:
类型是您向TypeOf [variable] Is [*type*]
或Dim [variable] As [*type*]
提供的内容:它是一个引用类/接口的标识符(如果是当然,对象 - 类型也可以是其中一个基元,例如Integer
或Boolean
)。鉴于VB6 / VBA中反射功能的缺点,缺少类似.net的类型系统,其中类型本身是一个可以使用的抽象,自定义Enum
类型和一个带有对象的函数,具有带Select Case
个检查的TypeOf
块,是该函数返回表示的正常数值常量的最佳选择>提供的对象的类型。