「vba イミディエイトウィンドウ object型」
「vba イミディエイトウィンドウ オブジェクト型 確認」
といった検索でアクセスがありました。
「As Object」と、総称オブジェクト型で宣言したオブジェクト変数に、何らかのオブジェクトをセットしたあとの具体的な型を、イミディエイトウィンドウで調べるにはどうすればいいのかを探していた方による検索でしょうか。
イミディエイトウィンドウを使う必要があるのか、VBE(Visual Basic Editor)のメニュー[表示]-[ローカルウィンドウ]から表示できる、
ローカルウィンドウではダメなのだろうかという疑問を感じますが、まずはイミディエイトウィンドウで、オブジェクト変数の型を調べる方法を。
オブジェクト変数の型をイミディエイトウィンドウに出力する
以下のSubプロシージャを実行すると、選択されていたオブジェクトの型が、イミディエイトウィンドウに出力されます。Dim obj As Object
Set obj = Selection
Debug.Print TypeName(obj)
End Sub
VBAのTypeName関数を使えば、オブジェクトの型も調べられます。
オブジェクト変数の型をイミディエイトウィンドウで調べる
ステップ実行中に、イミディエイトウィンドウからコードを実行して、イミディエイトウィンドウに出力することもできます。Dim obj As Object
Set obj = Selection
Stop
End Sub
先ほどのプロシージャとは違ってDebug.Print文はコード内に存在しません。
上記のプロシージャを実行するとStop文の箇所でステップ実行モードになりますから、その状態でイミディエイトウィンドウにと入力して[Enter]キーで下図のような出力が行われます。(セルが選択されている状態で実行したのでRangeと表示されています。)
イミディエイトウィンドウでは「Debug.Print」を「?」で代用できますから、と入力して[Enter]キーのほうが簡単でしょう。
イミディエイトウィンドウではDebug.Printの代わりに「?」で出力ができることは、是非覚えていただきたいポイントです。
オブジェクト変数の型をローカルウィンドウで調べる
このように、イミディエイトウィンドウを使う場合、コードの中に
Debug.Print TypeName(obj)
という行を追加するか、イミディエイトウィンドウで
? typename(obj)
というコードを実行する必要があります。
ローカルウィンドウならば、そんな操作は一切必要ありません。
ステップ実行中に、表示させておけば、上図のように型を確認できます。
「Object/Range」の、「Object」は「As Object」のObjectで「Range」が実際の型を表しています。
実行後に確認する必要があるなら、Debug.Print文をコードに追加するしかありませんが、ステップ実行中の確認ならば、ローカルウィンドウで十分ではないかと思います。
Home » エクセルマクロ・Excel VBAの使い方 » オブジェクト変数の型をイミディエイトウィンドウに