12345Dim y As Object Set y = CreateObject("/>

VB6运行时类型检索

VB6运行时类型检索

VB6 Runtime Type Retrieval

如何在运行时获取VB6中Object的Type(名称作为字符串是足够的)?

即类似于:

1
If Typeof(foobar) ="CommandButton" Then ...

/ EDIT:为明确起见,我需要检查动态类型的对象。例如:

1
2
3
4
5
Dim y As Object

Set y = CreateObject("SomeType")

Debug.Print( <The type name of> y)

输出为" CommandButton "


我认为您要查找的是TypeName而不是TypeOf。

1
2
3
If TypeName(foobar) ="CommandButton" Then
   DoSomething
End If

编辑:什么是动态对象?你的意思是用
CreateObject("),导致它仍然可以工作。

编辑:

1
2
3
4
5
Private Sub Command1_Click()
    Dim oObject As Object
    Set oObject = CreateObject("Scripting.FileSystemObject")
    Debug.Print"Object Type:" & TypeName(oObject)
End Sub

输出

Object Type: FileSystemObject


TypeName是您想要的...这是一些示例输出:

VB6代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub cmdCommand1_Click()
Dim a As Variant
Dim b As Variant
Dim c As Object
Dim d As Object
Dim e As Boolean

a =""
b = 3
Set c = Me.cmdCommand1
Set d = CreateObject("Project1.Class1")
e = False

Debug.Print TypeName(a)
Debug.Print TypeName(b)
Debug.Print TypeName(c)
Debug.Print TypeName(d)
Debug.Print TypeName(e)
End Sub

结果:

1
2
3
4
5
String
Integer
CommandButton
Class1
Boolean

我没有VB6的副本,但我认为您需要

1
Typename()

功能...我可以在Excel VBA中看到它,因此它可能在同一运行时中。有趣的是,该帮助似乎表明它不适用于用户定义的类型,但这是我使用它的唯一方法。

帮助文件的摘录:

TypeName Function

Returns a String that provides information about a variable.

Syntax

TypeName(varname)

The required varname argument is a
Variant containing any variable except
a variable of a user-defined type.


这应该被证明是困难的,因为在VB6中所有对象都是COM(IDispatch)事物。因此它们只是一个接口。

TypeOf(object) is class可能仅执行COM get_interface调用(抱歉,我忘记了确切的方法名称)。


推荐阅读

    查看linux类型命令?

    查看linux类型命令?,系统,信息,命令,状态,数据,数字,情况,地址,类型,文件,lin

    linux进程运行命令?

    linux进程运行命令?,系统,工作,状态,地址,信息,进程,基础,命令,管理,软件,lin

    linux运行vim命令?

    linux运行vim命令?,系统,工具,官方网站,模式,基础,数据,代码,环境,入口,命令

    linux监控命令运行?

    linux监控命令运行?,系统,工作,地址,信息,工具,情况,标准,环境,命令,状态,lin

    添加字符串命令linux?

    添加字符串命令linux?,情况,名称,文件,位置,名字,地方,连续,信息,命令,内容,L

    linux一般检查命令?

    linux一般检查命令?,网络,系统,检测,情况,工作,信息,命令,进程,时间,设备,lin

    检查硬件linux命令?

    检查硬件linux命令?,信息,系统,第一,数据,设备,检测,命令,情况,灵活,实时,如

    linux自动运行命令?

    linux自动运行命令?,服务,系统,时间,代码,周期性,第一,命令,管理,在线,状态,l

    linux开启运行命令?

    linux开启运行命令?,系统,服务,工作,管理,状态,命令,标准,情况,环境,工具,lin

    linux运行wps命令?

    linux运行wps命令?,软件,官网,名称,时间,电脑,系统,工具,环境,项目,数据,wps

    查看linux库类型命令?

    查看linux库类型命令?,系统,工作,信息,状态,电脑,命令,工具,代码,地址,发行,

    linux运行cmd命令?

    linux运行cmd命令?,电脑,系统,状态,情况,环境,命令,单位,管理,设备,数据,电脑

    linux运行两个命令?

    linux运行两个命令?,网络,地址,系统,工作,暂停,命令,网站,密码,网上,入口,Lin

    linux网卡类型命令?

    linux网卡类型命令?,网络,系统,地址,信息,设备,状态,服务,名称,名字,网卡,如

    检查路由命令linux?

    检查路由命令linux?,网络,地址,系统,信息,工具,电脑,时间,通信,服务,命令,lin

    linux命令运行代码?

    linux命令运行代码?,代码,单位,系统,环境,连续,保险,工具,命令,文件,音乐,Lin

    linux命令查找字符串?

    linux命令查找字符串?,工具,信息,命令,字符串,系统,工作,文件,范本,样式,文

    linux命令运行脚本?

    linux命令运行脚本?,代码,系统,工作,设计,状态,命令,脚本,文件,目录,终端,运

    linux上运行的命令?

    linux上运行的命令?,系统,工作,软件,网络,地址,信息,情况,命令,灵活,基础知

    linux怎么运行命令?

    linux怎么运行命令?,系统,工作,首页,工具,终端,地址,命令,信息,电脑,情况,怎