質問

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 のコピーが手元にありませんが、次のものが必要だと思います。

Typename()

関数...Excel VBAでは確認できるので、おそらく同じランタイムにあると思われます。興味深いことに、ヘルプには、ユーザー定義型では機能しないことが示唆されているようですが、それが私がこれまでに行った唯一の方法です。 する これを使って。

ヘルプ ファイルからの抜粋:

TypeName 関数

変数に関する情報を提供する文字列を返します。

構文

タイプ名(変数名)

必要なVarname引数は、ユーザー定義型の変数を除く任意の変数を含むバリアントです。

VB6 ではすべてのオブジェクトが COM (IDispatch) もの。したがって、それらは単なるインターフェースにすぎません。

TypeOf(object) is class おそらく COM get_interface 呼び出しのみを実行します (正確なメソッド名は忘れました、申し訳ありません)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top