【VBA】「なぜ動かない?」の悩みにおさらば!Debug.Printで裏側を透視する方法

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!

皆さんは、VBAを書いていて「あれ?エラーは出ないのに、なんで合計金額が0円なの?」とか、「ループ処理、今どこまで進んでるの?」と不安になったことはありませんか?

そんな時、いちいちMsgBoxで変数の中身を表示させて確認していませんか?

もし100回ループする処理でそれをやると、100回「OK」ボタンを押す羽目になります……。これは苦行ですよね。

今日は、そんな「見えない不安」を解消し、プログラムの裏側をレントゲンのように透視できる最強のツール、Debug.Printをご紹介します。

これを使えば、バグ探しの時間が半分以下になります!

【業務効率化】VBAの記事を見る

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の記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました