문제

런타임 시 VB6에서 객체의 유형(문자열 이름이면 충분함)을 어떻게 얻을 수 있습니까?

즉.다음과 같은 것:

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

/편집하다: 명확히 하려면 동적 형식 개체를 확인해야 합니다.예:

Dim y As Object 

Set y = CreateObject("SomeType")

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

출력은 "CommandButton"입니다.

도움이 되었습니까?

해결책

당신이 찾고있는 것은 TypeOf가 아닌 TypeName이라고 생각합니다.

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

다른 팁

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

VB6 사본이 없지만 VB6 사본이 필요하다고 생각합니다.

Typename()

기능...Excel VBA에서 볼 수 있으므로 아마도 동일한 런타임에 있을 것입니다.흥미롭게도 도움말에는 사용자 정의 유형에 대해서는 작동하지 않아야 한다고 제안하는 것 같지만 이것이 제가 지금까지 유일한 방법이었습니다. 하다 그걸 써.

도움말 파일에서 발췌:

TypeName 함수

변수에 대한 정보를 제공하는 문자열을 반환합니다.

통사론

유형 이름(변수 이름)

필요한 바나 이름 인수는 사용자 정의 유형의 변수를 제외한 모든 변수를 포함하는 변형입니다.

VB6에서는 모든 개체가 COM(IDispatch) 것들.따라서 그것들은 단지 인터페이스일 뿐입니다.

TypeOf(object) is class 아마도 COM get_interface 호출만 수행할 것입니다(정확한 메소드 이름을 잊어버렸습니다. 죄송합니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top