Home » エクセルマクロ・Excel VBAの使い方 » オブジェクト変数の型をイミディエイトウィンドウに

オブジェクト変数の型をイミディエイトウィンドウに

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「vba イミディエイトウィンドウ object型」
「vba イミディエイトウィンドウ オブジェクト型 確認」
といった検索でアクセスがありました。

「As Object」と、総称オブジェクト型で宣言したオブジェクト変数に、何らかのオブジェクトをセットしたあとの具体的な型を、イミディエイトウィンドウで調べるにはどうすればいいのかを探していた方による検索でしょうか。

イミディエイトウィンドウを使う必要があるのか、VBE(Visual Basic Editor)のメニュー[表示]-[ローカルウィンドウ]から表示できる、

オブジェクト変数の型をイミディエイトウィンドウに

ローカルウィンドウではダメなのだろうかという疑問を感じますが、まずはイミディエイトウィンドウで、オブジェクト変数の型を調べる方法を。

[スポンサードリンク]

オブジェクト変数の型をイミディエイトウィンドウに出力する

以下のSubプロシージャを実行すると、選択されていたオブジェクトの型が、イミディエイトウィンドウに出力されます。
Sub オブジェクト変数の型をイミディエイトウィンドウに出力する()
 Dim obj As Object
 Set obj = Selection
 Debug.Print TypeName(obj)
End Sub

VBAのTypeName関数を使えば、オブジェクトの型も調べられます。

オブジェクト変数の型をイミディエイトウィンドウで調べる

ステップ実行中に、イミディエイトウィンドウからコードを実行して、イミディエイトウィンドウに出力することもできます。
Sub オブジェクト変数の型をステップ実行中に確認する()
 Dim obj As Object
 Set obj = Selection
 Stop
End Sub

先ほどのプロシージャとは違ってDebug.Print文はコード内に存在しません。

上記のプロシージャを実行するとStop文の箇所でステップ実行モードになりますから、その状態でイミディエイトウィンドウに
  debug.print typename(obj)

と入力して[Enter]キーで下図のような出力が行われます。(セルが選択されている状態で実行したのでRangeと表示されています。)

オブジェクト変数の型をイミディエイトウィンドウに

イミディエイトウィンドウでは「Debug.Print」を「?」で代用できますから、
  ? typename(obj)

と入力して[Enter]キーのほうが簡単でしょう。

オブジェクト変数の型をイミディエイトウィンドウに

イミディエイトウィンドウではDebug.Printの代わりに「?」で出力ができることは、是非覚えていただきたいポイントです。

オブジェクト変数の型をローカルウィンドウで調べる

このように、イミディエイトウィンドウを使う場合、コードの中に
  Debug.Print TypeName(obj)
という行を追加するか、イミディエイトウィンドウで
  ? typename(obj)
というコードを実行する必要があります。

ローカルウィンドウならば、そんな操作は一切必要ありません。

オブジェクト変数の型をイミディエイトウィンドウに

ステップ実行中に、表示させておけば、上図のように型を確認できます。

「Object/Range」の、「Object」は「As Object」のObjectで「Range」が実際の型を表しています。

実行後に確認する必要があるなら、Debug.Print文をコードに追加するしかありませんが、ステップ実行中の確認ならば、ローカルウィンドウで十分ではないかと思います。

関連語句
VBA, Visual Basic for Applications
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » オブジェクト変数の型をイミディエイトウィンドウに

「エクセルマクロ・Excel VBAの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.