イミディエイトウィンドウへデバッグ情報を出力する

VBA のプログラムを作成し実行したときに思ったような結果にならないことがあります。このようなときにプログラムの中で変数にどんな値が実際に格納されたのかや特定のオブジェクトのプロパティの値を確認したい場合にイミディエイトウィンドウを使用すると便利です。プログラムの中で任意のタイミングでイミディエイトウィンドウに対して変数やプロパティの値を出力することができます。ここでは Excel VBA でイミディエイトウィンドウへデバッグ情報を出力する方法について解説します。

(Last modified: )

イミディエイトウィンドウを表示する

イミディエイトウィンドウは Visual Basic Editor の画面下部に表示されているウィンドウです。

イミディエイトウィンドウを表示する(1)

イミディエイトウィンドウが表示されていない場合もあります。

イミディエイトウィンドウを表示する(2)

その場合は「表示」タブをクリックし、表示されたメニューの中から「イミディエイトウィンドウ」をクリックしてください。

イミディエイトウィンドウを表示する(3)

イミディエイトウィンドウが表示されました。

イミディエイトウィンドウを表示する(4)

デバッグ情報を出力する

VBA のプログラムの中から特定の変数の値やオブジェクトのプロパティの値などをイミディエイトウィンドウに出力するには次の構文を使用します。

Debug.Print 値

プログラムの中でこの文が実行されると、イミディエイトウィンドウに「値」が出力されます。

例えば次のようなプログラムを記述したとします。 B2 セルと C2 セルに入力されている値を取得し、その加算した結果を D2 セルに入力するものです。

Sub テスト()
    Dim sum
    
    sum = Range("B2").Value + Range("C2").Value
    Range("D2").Value = sum
End Sub

デバッグ情報を出力する(1)

このプログラムそのものは問題ありませんが、思った結果にならなかった場合に例えば「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

デバッグ情報を出力する(2)

それではプログラムを実行してみてください。

デバッグ情報を出力する(3)

現在 Excel のシートの B2 セルには 10 が入力されています。

デバッグ情報を出力する(4)

プログラムの中で Debug.Print Range("B2").Value の文が実行されると、 B2 セルの値をイミディエイトウィンドウに出力します。今回は 10 という値が出力されました。

デバッグ情報を出力する(5)

デバッグ情報を出力する(6)

このようにプログラムの中の任意のタイミングで、プロパティの値をイミディエイトウィンドウに出力して値を確認することができます。

イミディエイトウィンドウに出力できる値は、プロパティだけでなく変数の値や、値そのものを直接記述して出力することもできます。

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 が入力されています。プログラムを実行すると結果として次のようにイミディエイトウィンドウに出力されます。

デバッグ情報を出力する(7)

今回は直接記述した文字列の値と変数の値をそれぞれ出力しました。

複数の値をまとめて出力する

複数の値をまとめてイミディエイトウィンドウに出力したい場合は、次のように出力する値をカンマ( , )で区切って指定します。

Debug.Print 値1, 値2, ...

例えば先ほどのサンプルを次のように書き換えてみます。

Sub テスト()
    Dim sum
    
    sum = Range("B2").Value + Range("C2").Value

    Debug.Print "合計値", sum

    Range("D2").Value = sum
End Sub

複数の値をまとめて出力する(1)

プログラムを実行するとイミディエイトウィンドウには次のように値が出力されます。

複数の値をまとめて出力する(2)

複数の値をまとめて出力すると、スペースで区切られて複数の値が 1 行で出力されました。

イミディエイトウィンドウ上でコードを実行する

VBA のプログラムの中から Debug.Print 値 を実行することで、イミディエイトウィンドウに値を出力することができますが、イミディエイトウィンドウでは 1 行のコードを実行することができるので、イミディエイトウィンドウで同じように Debug.Print 値 を実行することができます。

例えば次のようにイミディエイトウィンドウで実行をしてみました。

イミディエイトウィンドウ上でコードを実行する(1)

Enter キーを押すとコードが実行されて値が出力されます。

イミディエイトウィンドウ上でコードを実行する(2)

なおイミディエイトウィンドウ内で特定の値を出力する場合は、 Debug.Print 値 の代わりに ? 値 と簡潔に記述することができます。

? 値

実際に試してみると次のように値を取得することができました。

イミディエイトウィンドウ上でコードを実行する(3)

なおイミディエイトウィンドウでは Debug.Print だけでなく 1 行のコードであれば実行することができます。例えば値の取得ではなく、特定のセルに値を入力するようなコードを実行することもできます。

イミディエイトウィンドウ上でコードを実行する(4)

イミディエイトウィンドウ上でコードを実行する(5)

-- --

Excel VBA でイミディエイトウィンドウへデバッグ情報を出力する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。