2008-09-09 34 views
6

Làm thế nào bạn có thể có được Loại (tên như một chuỗi là đủ) của một đối tượng trong VB6 khi chạy?Truy xuất kiểu thời gian chạy VB6

ví dụ: một cái gì đó như:

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

/EDIT: để làm rõ, tôi cần phải kiểm tra trên các đối tượng động gõ. Một ví dụ:

Dim y As Object 

Set y = CreateObject("SomeType") 

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

Trường hợp đầu ra sẽ là "CommandButton"

Trả lời

8

Tôi nghĩ rằng những gì bạn đang tìm kiếm là TypeName thay vì TypeOf.

If TypeName(foobar) = "CommandButton" Then 
    DoSomething 
End If 

Chỉnh sửa: Ý của bạn là gì? Bạn có nghĩa là các đối tượng được tạo ra với CreateObject (""), vì điều đó vẫn hoạt động.

Edit:

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

Đầu ra

Object Type: FileSystemObject

+0

Có lẽ tôi nên làm rõ câu hỏi của tôi, tôi muốn biết những gì một đối tượng kiểu động, do đó, sử dụng TypeName sẽ (trong trường hợp của tôi) chỉ trả về "Object". – DAC

0

này nên chứng minh khó khăn, vì trong VB6 tất cả các đối tượng là COM (IDispatch) điều. Vì vậy, họ chỉ là một giao diện.

TypeOf(object) is class có lẽ chỉ thực hiện cuộc gọi get_interface COM (Tôi quên tên phương thức chính xác, xin lỗi).

2

Tôi không có một bản sao của VB6 để bàn, nhưng tôi nghĩ rằng bạn cần chức năng

Typename() 

. .. Tôi có thể nhìn thấy nó trong Excel VBA, vì vậy nó có thể trong cùng một thời gian chạy. Thật thú vị, sự trợ giúp dường như cho thấy rằng nó không nên làm việc cho một loại người dùng định nghĩa, nhưng đó là cách duy nhất tôi từng sử dụng làm sử dụng nó.

Trích từ tập tin trợ giúp:

TypeName Chức năng

Trả về một chuỗi cung cấp thông tin về một biến.

Cú pháp

TypeName (varname)

Đối số varname yêu cầu là một biến thể chứa bất kỳ biến trừ một biến của một kiểu người dùng định nghĩa.

2

TypeName là những gì bạn muốn ...Dưới đây là một số ví dụ đầu ra:

Mã 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 

Kết quả:

String 
Integer 
CommandButton 
Class1 
Boolean 
Các vấn đề liên quan