HOME > 即効テクニック集 > Excel VBA > その他関連のテクニック > イミディエイトウィンドウを開く
その他関連のテクニック

イミディエイトウィンドウを開く

(Excel 97/2000/2002/2003/2007)
イミディエイトウィンドウとは、VBEのデバッグで使われるウィンドウです。
VBEを起動して[表示]-[イミディエイトウィンドウ]を実行してください。
真っ白なウィンドウが表示されたはずです。これがイミディエイトウィンドウです。

イミディエイトウィンドウは通称デバッグウィンドウとも呼ばれるように、マクロ作成のデバッグ時によく使われる機能です。
たとえば、次のコードは全てのシート名をイミディエイトウィンドウに出力します。

Sub Sample1()
    Dim i As Long
    For i = 1 To Worksheets.Count
        Debug.Print Worksheets(i).Name
    Next i
End Sub
イミディエイトウィンドウに出力するには、Debug.Printという命令を使います。 さて、デバッグ時には欠かせないイミディエイトウィンドウですが、せっかくDebug.Printを実行しても、ウィンドウが開いていなければ、その結果を確認することはできません。 もちろん、先ほどやったように[表示]メニューを操作するか、Ctrl+Gキーを押せば表示できますが、何とか自動的に表示させる方法はないのでしょうか。 もちろん可能です。次のコードは、イミディエイトウィンドウが閉じていても自動的に表示させます。
Sub Sample2()
    Dim i As Long
    Application.VBE.Windows("イミディエイト").Visible = True
    For i = 1 To Worksheets.Count
        Debug.Print Worksheets(i).Name
    Next i
End Sub
イミディエイトウィンドウはVBEのWindowオブジェクトに属します。 表示するかどうかはVisibleプロパティで決まりますので、Trueを設定してやれば[表示]メニューを操作したときと同じように表示されます。 なお、Sample2のコードでは、イミディエイトウィンドウを開くと同時にイミディエイトウィンドウ内にカーソルが移動してしまいます。 そのままイミディエイトウィンドウ内で作業を続けるのならよいのですが、Debug.Printの結果を見て、マクロのコードを修正したいときには困ります。 イミディエイトウィンドウを開いても、マクロを記述しているコードペイン側にカーソルが表示されるようにするには、次のように工夫が必要です。
Sub Sample3()
    Dim i As Long, CP
    With Application.VBE
        Set CP = .ActiveWindow
        .Windows("イミディエイト").Visible = True
        For i = 1 To Worksheets.Count
            Debug.Print Worksheets(i).Name
        Next i
        CP.SetFocus
    End With
End Sub
VBE内のコードペインやイミディエイトウィンドウ、UserFormの設計画面などは、すべてVBEのWindowオブジェクトとして操作できます。 イミディエイトウィンドウを表示するとイミディエイトウィンドウにフォーカスが移動してしまいますので、その直前にアクティブだったWindow(=実行したマクロが書かれているコードペイン)を覚えておき、最後にSetFocusでフォーカスを移動します。