- Home ›
- Excel VBA入門 ›
- VBA基礎知識
イミディエイトウィンドウへデバッグ情報を出力する
VBA のプログラムを作成し実行したときに思ったような結果にならないことがあります。このようなときにプログラムの中で変数にどんな値が実際に格納されたのかや特定のオブジェクトのプロパティの値を確認したい場合にイミディエイトウィンドウを使用すると便利です。プログラムの中で任意のタイミングでイミディエイトウィンドウに対して変数やプロパティの値を出力することができます。ここでは Excel VBA でイミディエイトウィンドウへデバッグ情報を出力する方法について解説します。
(Last modified: )
イミディエイトウィンドウを表示する
イミディエイトウィンドウは Visual Basic Editor の画面下部に表示されているウィンドウです。
イミディエイトウィンドウが表示されていない場合もあります。
その場合は「表示」タブをクリックし、表示されたメニューの中から「イミディエイトウィンドウ」をクリックしてください。
イミディエイトウィンドウが表示されました。
デバッグ情報を出力する
VBA のプログラムの中から特定の変数の値やオブジェクトのプロパティの値などをイミディエイトウィンドウに出力するには次の構文を使用します。
Debug.Print 値
プログラムの中でこの文が実行されると、イミディエイトウィンドウに「値」が出力されます。
例えば次のようなプログラムを記述したとします。 B2 セルと C2 セルに入力されている値を取得し、その加算した結果を D2 セルに入力するものです。
Sub テスト() Dim sum sum = Range("B2").Value + Range("C2").Value Range("D2").Value = sum End Sub
このプログラムそのものは問題ありませんが、思った結果にならなかった場合に例えば「Range("B2").Value」の値をちゃんと取得できているかどうか確認するには次のように Debug.Print
を使用してプロパティの値をイミディエイトウィンドウに出力してみます。
Sub テスト()
Dim sum
Debug.Print Range("B2").Value
sum = Range("B2").Value + Range("C2").Value
Range("D2").Value = sum
End Sub
それではプログラムを実行してみてください。
現在 Excel のシートの B2 セルには 10 が入力されています。
プログラムの中で Debug.Print Range("B2").Value
の文が実行されると、 B2 セルの値をイミディエイトウィンドウに出力します。今回は 10 という値が出力されました。
このようにプログラムの中の任意のタイミングで、プロパティの値をイミディエイトウィンドウに出力して値を確認することができます。
イミディエイトウィンドウに出力できる値は、プロパティだけでなく変数の値や、値そのものを直接記述して出力することもできます。
Sub テスト() Dim sum sum = Range("B2").Value + Range("C2").Value Debug.Print "合計値" Debug.Print sum Range("D2").Value = sum End Sub
現在 Excel のシートの B2 セルには 10 、 C2 セルには 8 が入力されています。プログラムを実行すると結果として次のようにイミディエイトウィンドウに出力されます。
今回は直接記述した文字列の値と変数の値をそれぞれ出力しました。
複数の値をまとめて出力する
複数の値をまとめてイミディエイトウィンドウに出力したい場合は、次のように出力する値をカンマ( ,
)で区切って指定します。
Debug.Print 値1, 値2, ...
例えば先ほどのサンプルを次のように書き換えてみます。
Sub テスト()
Dim sum
sum = Range("B2").Value + Range("C2").Value
Debug.Print "合計値", sum
Range("D2").Value = sum
End Sub
プログラムを実行するとイミディエイトウィンドウには次のように値が出力されます。
複数の値をまとめて出力すると、スペースで区切られて複数の値が 1 行で出力されました。
イミディエイトウィンドウ上でコードを実行する
VBA のプログラムの中から Debug.Print 値
を実行することで、イミディエイトウィンドウに値を出力することができますが、イミディエイトウィンドウでは 1 行のコードを実行することができるので、イミディエイトウィンドウで同じように Debug.Print 値
を実行することができます。
例えば次のようにイミディエイトウィンドウで実行をしてみました。
Enter
キーを押すとコードが実行されて値が出力されます。
なおイミディエイトウィンドウ内で特定の値を出力する場合は、 Debug.Print 値
の代わりに ? 値
と簡潔に記述することができます。
? 値
実際に試してみると次のように値を取得することができました。
なおイミディエイトウィンドウでは Debug.Print
だけでなく 1 行のコードであれば実行することができます。例えば値の取得ではなく、特定のセルに値を入力するようなコードを実行することもできます。
-- --
Excel VBA でイミディエイトウィンドウへデバッグ情報を出力する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。