こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!
皆さんは、VBAを書いていて「あれ?エラーは出ないのに、なんで合計金額が0円なの?」とか、「ループ処理、今どこまで進んでるの?」と不安になったことはありませんか?
そんな時、いちいちMsgBoxで変数の中身を表示させて確認していませんか?
もし100回ループする処理でそれをやると、100回「OK」ボタンを押す羽目になります……。これは苦行ですよね。
今日は、そんな「見えない不安」を解消し、プログラムの裏側をレントゲンのように透視できる最強のツール、Debug.Printをご紹介します。
これを使えば、バグ探しの時間が半分以下になります!
Debug.Printとは?
Debug.Printは、VBAのコードの中に埋め込むことで、指定した値や文字を「イミディエイトウィンドウ」という専用の場所にこっそり出力してくれる命令です。
ユーザー(画面を見ている人)には何も表示されませんが、開発画面を見ている人だけが、プログラムの健康状態をチェックできます。
基本的な使い方
使い方は超シンプルです。
Debug.Print 出力したいもの
これだけです。では、実際にやってみましょう。
1. 変数の中身を確認する
計算結果が合っているか不安な時に使います。
Sub CheckVariables()
Dim price As Long
Dim tax As Double
Dim total As Long
price = 1000
tax = 1.1
total = price * tax
' ここで中身をチェック!
Debug.Print "価格: " & price
Debug.Print "税込: " & total
End Sub
'出力結果(イミディエイトウィンドウ):
'価格: 1000
'税込: 1100
これなら計算の途中経過が正しいか一目瞭然ですよね。
2. 処理の進捗を確認する(おすすめ!)
「処理が重くて画面が固まった…動いてるの?止まってるの?」という不安を解消します。
Sub CheckProgress()
Dim i As Long
' 100回繰り返すループ
For i = 1 To 100
' 10回に1回だけ進捗を表示する
If i Mod 10 = 0 Then
Debug.Print i & "件目の処理完了..." & Now()
End If
' (ここに実際の重い処理が入る想定)
Next i
Debug.Print "すべての処理が終わりました!"
End Sub
'出力結果:
'10件目の処理完了...2024/05/20 10:00:01
'20件目の処理完了...2024/05/20 10:00:02
'...
'100件目の処理完了...2024/05/20 10:00:10
'すべての処理が終わりました!
このようにタイムスタンプ(Now())と一緒に吐き出すと、「10件処理するのに何秒かかっているか」も分析できて、業務効率化のヒントにもなります。
イミディエイトウィンドウの出し方
「コードを書いたけど、出力結果がどこにも出ない…」
VBE(編集画面)で、「Ctrl + G」を押してください。
これで、画面の下の方に「イミディエイト」というウィンドウが現れます。ここにDebug.Printの結果が溜まっていきます。
おわりに
プログラミング初心者の頃、私は「コードを書く時間」より「なぜ動かないか悩む時間」の方が長かったです。
でも、Debug.Printを使い始めてからは、「悩む」のではなく「事実を確認する」ことができるようになり、修正スピードが劇的に上がりました。
みなさんも、プログラムの動きが怪しいときは、すぐにDebug.Printを仕込むクセをつけてみてください。
「見えないものが見える」感覚、きっと楽しくなるはずです!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント