如何在運行時獲取VB6中的對象的類型(名稱作爲字符串就足夠了)?VB6運行時類型檢索
即是這樣的:
If Typeof(foobar) = "CommandButton" Then ...
/編輯:澄清,我需要檢查動態類型的對象。舉個例子:
Dim y As Object
Set y = CreateObject("SomeType")
Debug.Print(<The type name of> y)
對輸出將是 「命令按鈕」
如何在運行時獲取VB6中的對象的類型(名稱作爲字符串就足夠了)?VB6運行時類型檢索
即是這樣的:
If Typeof(foobar) = "CommandButton" Then ...
/編輯:澄清,我需要檢查動態類型的對象。舉個例子:
Dim y As Object
Set y = CreateObject("SomeType")
Debug.Print(<The type name of> y)
對輸出將是 「命令按鈕」
我認爲你要找的是TypeName而不是TypeOf。
If TypeName(foobar) = "CommandButton" Then
DoSomething
End If
編輯:你是什麼意思動態對象?你的意思是用 CreateObject(「」)創建的對象,應該仍然有效。
編輯:
Private Sub Command1_Click()
Dim oObject As Object
Set oObject = CreateObject("Scripting.FileSystemObject")
Debug.Print "Object Type: " & TypeName(oObject)
End Sub
輸出
Object Type: FileSystemObject
這應該證明是困難的,因爲在VB6中的所有對象都是COM(IDispatch
)的東西。因此他們只是一個界面。
TypeOf(object) is class
可能只是一個COM get_interface調用(我忘了確切的方法名稱,對不起)。
我沒有VB6的副本的手,但我認爲你需要的
功能。 ..我可以在Excel VBA中看到它,所以它可能在同一個運行時。有趣的是,該幫助似乎表明它不應該爲用戶定義的類型工作,但這是我使用它的唯一方法做了。從幫助文件
摘錄:
TypeName函數
返回一個字符串,提供有關變量的信息。
語法
類型名(VARNAME)
所需VARNAME參數是包含任何變量除了 用戶定義類型的一個可變變 。
TypeName是你想要的...下面是一些例子輸出:
VB6代碼:
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
結果:
String
Integer
CommandButton
Class1
Boolean
也許我要澄清我的問題,我想知道一個動態類型的對象是什麼,使用這樣的TypeName會(在我的情況下)只返回「對象」。 – DAC 2008-09-09 16:07:50