イミディエイトウィンドウって何をするところ?
イミディエイトウィンドウは、VBAの世界の「その場で試せるメモ帳兼電卓兼リモコン」です。
コードを書いて保存して実行するのではなく、「一行だけ命令を書いて、すぐ実行して結果を見る」ことができます。
たとえば、
今 A1 セルには何が入っている?
この計算式の結果はいくつ?
この命令を一回だけ試しに動かしてみたい。
こういうときに、わざわざ Sub を書かなくても、イミディエイトウィンドウに一行書いて Enter を押せば、その場で実行できます。
「ちょっと試したい」「ちょっと確認したい」を一瞬でできる、超便利な実験スペースだと思ってください。
イミディエイトウィンドウの開き方と閉じ方
表示する方法
まずは出し方からいきます。
VBE(Visual Basic Editor)を開いた状態で、次のどちらかを行います。
メニューの「表示」から「イミディエイト ウィンドウ」を選ぶ。
キーボードで Ctrl+G を押す。
画面の下の方に、横長の小さなウィンドウが出てきて、左端に「イミディエイト」と表示されていればOKです。
ここにカーソルを置いて、直接文字を入力できます。
もし見失ったら、もう一度 Ctrl+G を押せば、必ず前面に出てきます。
「迷子になったら Ctrl+G」と覚えておくと安心です。
非表示にするイメージ
邪魔になったら、右上の×ボタンで閉じることもできます。
閉じても、また Ctrl+G でいつでも呼び出せます。
イミディエイトウィンドウは、「必要なときだけ出して、用が済んだらしまう」くらいの軽い存在で大丈夫です。
イミディエイトウィンドウでできることの基本
その場で命令を実行する
イミディエイトウィンドウの一番分かりやすい使い方は、「一行だけ命令を書いて、その場で実行する」ことです。
たとえば、イミディエイトウィンドウにこう書いて Enter を押します。
Range("A1").Value = "テスト"
VBすると、今アクティブなシートの A1 セルに「テスト」と書き込まれます。
Sub も End Sub もいりません。一行だけで即実行です。
もう一つ例を出すと、
MsgBox "イミディエイトからメッセージ"
VBと書いて Enter を押すと、その場でメッセージボックスが表示されます。
「この命令、ちゃんと動くかな?」をサッと試すのに最適です。
計算結果をその場で確認する
イミディエイトウィンドウは、簡単な電卓としても使えます。
次のように書いて Enter を押してみてください。
? 10 + 20
VB先頭の「?」は「結果を表示して」という意味です。
Enter を押すと、その下の行に 30 と表示されます。
同じように、
? 5 * 7
? (10 + 20) / 3
VBなどと書けば、計算結果がすぐに表示されます。
「この式、ちゃんと合ってるかな?」を確認するときに、とても便利です。
変数やセルの中身を確認する使い方
変数の値をイミディエイトで見る
ステップ実行(F8)やブレークポイントでマクロを止めているとき、イミディエイトウィンドウは本領を発揮します。
止まっているタイミングで、変数の中身を確認できるからです。
たとえば、こんなコードがあるとします。
Sub 変数の練習()
Dim x As Long
Dim y As Long
Dim z As Long
x = 10
y = 20
z = x + y
End Sub
VBz = x + y の行にブレークポイントを置いて F5 で実行し、その行で止めます。
この状態でイミディエイトウィンドウに
? x
VBと書いて Enter を押すと、下に 10 と表示されます。
同じように
? y
VBと書けば 20 が表示されます。
さらに、まだ z に代入される前なら、
? x + y
VBと書いて 30 を確認してから、F8 で z = x + y を実行し、
その後で
? z
VBと打てば、z に 30 が入ったことも確認できます。
「今この瞬間、この変数には何が入っている?」を知るための、超強力な窓がイミディエイトウィンドウです。
セルの値を確認する
変数だけでなく、セルの中身も同じように確認できます。
たとえば、
? Range("A1").Value
VBと書いて Enter を押すと、A1 セルの値が表示されます。
数式が入っていても、表示されるのは「計算された結果」です。
「このセル、今いくつになってるんだっけ?」
「この処理の前後で値がどう変わった?」
こういう確認を、コードを書き換えずにその場でできるのが、イミディエイトの良さです。
Debug.Print とイミディエイトの組み合わせ
Debug.Print とは何か
イミディエイトウィンドウに直接「? x」と打つのではなく、コードの中に「ここで値を出力しておいて」と仕込んでおく方法もあります。
それが Debug.Print です。
たとえば、先ほどの変数の例を少し変えてみます。
Sub 変数の練習2()
Dim x As Long
Dim y As Long
Dim z As Long
x = 10
y = 20
z = x + y
Debug.Print "xの値は"; x
Debug.Print "yの値は"; y
Debug.Print "zの値は"; z
End Sub
VBこのマクロを F5 で実行すると、画面上は何も起きません。
しかし、イミディエイトウィンドウを見ると、
xの値は 10
yの値は 20
zの値は 30
というように、Debug.Print で出力した内容が表示されています。
なぜ Debug.Print が便利なのか
Debug.Print の良さは、「コードの中に“ログ出力”を仕込んでおける」ことです。
イミディエイトに手で打たなくても、マクロを実行するたびに、途中経過を自動で記録してくれます。
長い処理の中で、「このタイミングでこの値になっているはず」というポイントに Debug.Print を入れておくと、
後からイミディエイトウィンドウを見返すだけで、流れを追いやすくなります。
超初心者のうちは、
「とりあえず Debug.Print で値を出してみる」
「イミディエイトで結果を眺めてみる」
というだけでも、かなり理解が深まります。
イミディエイトウィンドウを使うときのコツ
失敗しても怖くない命令から試す
イミディエイトウィンドウは、その場で命令が実行されるので、強力な分、ちょっと怖く感じるかもしれません。
最初は、セルに文字を書くだけ、メッセージを出すだけ、計算するだけ、といった「安全な命令」から慣れていくと安心です。
たとえば、次のようなものは、いくら打っても大事故にはなりません。
Range(“A1”).Value = “テスト”
? 10 + 20
MsgBox “確認”
逆に、Delete や ClearContents など、「消す系」の命令は、慣れるまではイミディエイトではあまり使わない方が安全です。
「見る」と「動かす」を分けて考える
イミディエイトウィンドウでやることは、大きく二つに分かれます。
一つは「見る」こと(? x や ? Range(“A1”).Value)。
もう一つは「動かす」こと(Range(“A1”).Value = “テスト” など)。
超初心者のうちは、まず「見る」用途から使い始めるのがおすすめです。
変数やセルの中身を確認するだけなら、状態を壊す心配がありません。
「見るのには慣れてきたな」と感じたら、少しずつ「動かす」命令も試していく、という順番が安心です。
まとめと、次の一歩
イミディエイトウィンドウは、VBAの世界の「その場で試せる実験スペース」です。
Ctrl+G で開き、一行の命令を打って Enter を押すだけで、すぐに実行できます。
? を使えば計算結果や変数・セルの中身を表示でき、Debug.Print を使えばコードからイミディエイトにログを出せます。
次の一歩としては、次の三つをぜひやってみてください。
Range(“A1”).Value = “イミディエイトから” と打って Enter。
? Range(“A1”).Value と打って、さっき入れた文字が表示されるのを確認。
簡単なマクロの最後に Debug.Print で変数の値を出してみて、イミディエイトにどう表示されるか眺めてみる。
「コードを書かなくても、ここでいろいろ試せるんだ」と体で分かってくると、イミディエイトウィンドウは一気に“プロっぽい道具”から“自分の相棒”に変わっていきます。
