みなさんは、VBE(Visual Basic Editor)の「イミディエイト画面」を知っていますか?
私は…お恥ずかしながら今さら知りました。
ExcelVBAを活用し始めてそこそこ経つのになんで今まで知らなかったのか…
と、ちょっと悔しい気持ちです。
でも、実際に使ってみたら本当に便利で驚きました!
今回はその感動を記録として残しておきたいのと、私と同じようにExcelVBAに取り組んでいる初心者さんのちょっとした手助けになればと思い、記事にしてみようと思います。
初心者にこそ必要なイミディエイト機能
私が今までしていた非効率な確認方法
少し複雑なプログラムを組み始めると条件分岐が入り乱れるようになりますよね。
そして複雑になればなるほど思うように動かないということが起こる可能性が高くなります。
私が組んだプログラムは大抵が一発で上手くいきません。悲しいことに。
で、そんなとき不具合を修正するためには、どこの条件設定が間違っているのか、そもそも想定している条件を通っているのか確認する必要があります。
その確認方法を私は、VBEのイミディエイト機能を知るまで、すべてMsgBoxで行っていました。
↓こんな感じのコードですね。
MsgBox "⓵の条件通過"

この方法自体は間違いではないし、問題なく動作します。
この方法自体は間違いではないし、問題なく動作します。
でも…正直、いくつか不便な点があるんです。
MsgBoxで確認する場合のデメリット↓
- メッセージボックスが表示されるたびにプログラム実行が一時停止する
- 使用する必要がなくなったらその都度コメントアウト or 削除しなければならない
これがちょっとしたことにみえて、実はものすごく面倒。
たとえば不具合を修正したあとに仕様変更が入って「もう一回テストしよう」ってなったとき、またゼロからMsgBoxを仕込む必要があるんです。
条件分岐が多くなればなるほど、それだけでかなり時間がかかります。
これまでの私は見事に不要な時間を使っていましたね…はい。。
ある日、偶然見つけた「イミディエイト画面」の存在
とはいえ、周りにプログラミングの相談が出来る人はいないし、テストは問題なくできているのでその辺の不便さは放置していました。
そんなある日、別のことを調べているときにイミディエイト画面というものの存在を知りました。
これが使ってみてかなり便利だったので感想や使い方をお話していきますね!
実際に使ってみて感じたメリット
- プログラム実行時に都度一時停止しなくなる
- エディタ画面で完結するため都度コードを消す必要がなくなる
MsgBoxをイミディエイト画面に変えてテストしたときのメリットは上記のように、MsgBoxを使用していた時のデメリットがそのまま逆になった感じですね。
プログラム完成後に都度コードを消す必要がない、そのお陰で余計なことを考える必要が減ったし、次の仕様変更時に都度MsgBoxを挿入する必要がないからコードを追加・変更してそのままテスト実行ができてかなり楽になりました。
簡単な使い方とコード例
それではイミディエイト画面の表示方法とコードの書き方をご説明します。
イミディエイト画面に実行結果を表示させるには「Debug.Print」コードを使用します。
実際の下記方は以下のようにし、条件分岐ごとに設置してあげてください。
Sub サンプルコード()
Dim i As Integer
For i = 1 To 5
If i Mod 2 = 0 Then
Debug.Print i & " は偶数です"
Else
Debug.Print i & " は奇数です"
End If
Next i
Debug.Print "処理が完了しました"
End Sub
↑こちらのコードを実行した際にどのように表示されるかがコチラ↓

このようにした画面に実行結果が表示されます。
ちなみに、イミディエイト画面はデフォルトでは表示されていないので、画面上の「表示メニュー」から「イミディエイト ウィンドウ」を選択して表示させておいてください。
エディタ画面ですべてが完結するので都度Excelの画面に移動して確認しなくていいのでとても便利!
初心者こそ知っておきたい、すっごく便利な機能
条件分岐で思うような動きをしないときって、エラーが出てるわけじゃないからどこを修正したらいいのかとても迷いますよね。
そんな時はぜひ、今回紹介したイミディエイト機能を使用してみてください。
コメント