VBAでマクロを作っていて「この変数、今なにが入ってるんだろう?」と気になったことはありませんか?
MsgBoxで毎回確認するのも面倒だし、Stopで止めてもどこを見ればいいかわからない。そんなときに活躍するのがイミディエイトウィンドウです。
この記事では、イミディエイトウィンドウの表示方法から実務で役立つ使い方まで、初心者の方にもわかりやすく解説していきます。
イミディエイトウィンドウとは
イミディエイトウィンドウとは、VBE(Visual Basic Editor)に搭載されているデバッグ用のウィンドウです。
「イミディエイト(Immediate)」は英語で「即座に」という意味で、名前のとおりコマンドを入力するとすぐに結果を返してくれます。
主にできることをまとめると、こんな感じです。
| できること | 使う場面 |
|---|---|
| 変数やプロパティの値を確認 | デバッグ中に中身をチェックしたいとき |
| Debug.Printで値を出力 | コードの実行経過を追いたいとき |
| プロシージャを直接実行 | 引数付きのプロシージャをテストしたいとき |
| セルの値を取得・設定 | ちょっとした動作確認をサッと済ませたいとき |
VBEにはデバッグに便利なウィンドウがいくつかありますが、イミディエイトウィンドウは最も手軽に使えるツールです。VBEの画面構成についてはこちらの記事で詳しく解説しています。
イミディエイトウィンドウの表示方法
イミディエイトウィンドウはデフォルトでは表示されていないことがあります。表示する方法は2つあります。
メニューから表示する
VBEの画面上部にある「表示」メニューをクリックして、「イミディエイト ウィンドウ」を選択します。これでVBEの画面下部にイミディエイトウィンドウが表示されます。
ショートカットキーで表示する(Ctrl+G)
もっと手軽な方法がショートカットキーです。VBEの画面上で Ctrl+G を押すだけで、イミディエイトウィンドウがパッと表示されます。
毎回メニューから探すのは面倒なので、Ctrl+Gだけ覚えておけばOKです。
イミディエイトウィンドウの使い方
ここからが本題です。イミディエイトウィンドウの具体的な使い方を4つのパターンに分けて紹介していきます。
?(クエスチョンマーク)で値を確認する
イミディエイトウィンドウに ?(クエスチョンマーク) に続けて変数名やプロパティを入力し、Enterを押すと、その値がすぐに表示されます。
たとえば、マクロの実行中にStop文やブレークポイントで一時停止しているとき、次のように入力します。
?myVariable
変数 myVariable に「100」が入っていれば、Enterを押した瞬間に「100」と表示されます。
変数だけでなく、セルの値やプロパティも確認できますよ。
?ActiveCell.Value
?Range("A1").Row
?ActiveSheet.Name
ちなみに、この ? は Print メソッドの省略形です。Print myVariable と入力しても同じ結果になりますが、? のほうが圧倒的にラクなので、こちらを使うのがおすすめです。
Debug.Printでコード内から出力する
確認したい変数が決まっている場合は、コードの中に Debug.Print を書いておくと便利です。マクロを実行するだけで、イミディエイトウィンドウに値が自動で出力されます。
Sub SampleDebugPrint()
Dim i As Long
For i = 1 To 5
Debug.Print "現在のi: " & i
Next i
End Sub
このコードを実行すると、イミディエイトウィンドウには次のように表示されます。
現在のi: 1
現在のi: 2
現在のi: 3
現在のi: 4
現在のi: 5
MsgBoxだと1つずつOKボタンを押さないといけませんが、Debug.Printならまとめて一覧で確認できます。ループ処理のデバッグでは特に重宝しますよ。
プロシージャを直接実行する
引数を設定したプロシージャは、VBEの実行ボタン(F5)では単体で実行できないですよね。呼び出す側のプロシージャがまだできていないと、動作確認もできません。
そんなときはイミディエイトウィンドウから直接実行してしまいましょう。
Call SampleProcedure("テスト", 100)
引数がないプロシージャなら、プロシージャ名だけ入力してEnterを押せばOKです。
SampleProcedure
テスト用のプロシージャをわざわざ作らなくていいので、開発効率がグッと上がります。
プロパティの値を取得・設定する
イミディエイトウィンドウでは、値を確認するだけでなく設定もできます。たとえば、セルに値を入れたいときはこんなふうに書きます。
Range("A1").Value = "テスト"
Enterを押すと、実際にセルA1に「テスト」という文字列が入力されます。ちょっとした動作確認をしたいときに、いちいちマクロを書かなくても済むので便利です。
シートの名前を変更したり、セルの書式を変えたりもできます。
ActiveSheet.Name = "集計用"
Range("B2").Font.Bold = True
イミディエイトウィンドウの便利テクニック
基本的な使い方がわかったところで、知っておくと役立つテクニックを紹介します。
複数の値をまとめて出力する
Debug.Printで複数の値を一度に出力したいときは、値と値の間を セミコロン(;) や カンマ(,) で区切ります。
Debug.Print "名前: " ; "田中" ; " 年齢: " ; 30
セミコロンで区切ると値がそのまま連結されます。カンマで区切るとタブ区切り(一定間隔のスペース)になるので、表形式の出力をしたいときに使えます。
Debug.Print "名前", "年齢", "部署"
Debug.Print "田中", 30, "営業部"
Debug.Print "佐藤", 25, "経理部"
計算式を直接実行する
イミディエイトウィンドウでは、ちょっとした計算もできます。
?1 + 2 + 3
これを入力してEnterを押すと「6」と表示されます。VBAの関数も使えるので、ワークシート関数の動作確認にも便利です。
?Int(10.7)
?Len("テスト文字列")
イミディエイトウィンドウをクリアする
Debug.Printの出力がどんどん溜まってくると、画面が見づらくなりますよね。残念ながらイミディエイトウィンドウにはクリアボタンがありません。
クリアするには、イミディエイトウィンドウ内をクリックして Ctrl+A(全選択)を押した後、Delete キーを押します。これで中身がきれいになります。
イミディエイトウィンドウが表示されないときの対処法
「Ctrl+Gを押しても出てこない」という場合は、以下のポイントを確認してみてください。
- VBEが開いているか確認する: イミディエイトウィンドウはVBEの中にあるウィンドウです。ExcelのシートではなくVBE(Alt+F11で開く)上でCtrl+Gを押してください
- ウィンドウが小さくなっていないか確認する: 以前の操作でウィンドウが画面の端に小さく畳まれている場合があります。VBE画面の下部や端をよく確認してみてください
- 表示メニューから再表示する: ショートカットで出ない場合は、VBEの「表示」メニューから「イミディエイト ウィンドウ」を選択してください
会社の共有PCなどでは、前に使った人がウィンドウの配置を変えていることもあります。そんなときも落ち着いてメニューから表示すれば大丈夫です。
まとめ
イミディエイトウィンドウは、VBAのデバッグ作業をぐっとラクにしてくれる便利なツールです。
ポイントをおさらいしておきましょう。
- 表示方法: VBE上で Ctrl+G を押すだけ
- ?コマンド: 変数やプロパティの値をサッと確認
- Debug.Print: コード内に仕込んで実行結果を自動出力
- プロシージャ実行: 引数付きプロシージャのテストに最適
- 値の設定: セルへの書き込みなど簡単な操作もこなせる
MsgBoxで1つずつ確認していた方は、Debug.Printに切り替えるだけでデバッグがかなり快適になるはずです。ぜひ試してみてください。
VBEにはイミディエイトウィンドウ以外にもデバッグに役立つウィンドウがあります。あわせてチェックしてみてくださいね。
