【VBAマクロ】debug.printの使い方・表示方法【1秒デバッグ】

スポンサードリンク
VBA

VBAでプログラムを作成する際、コードの動作確認やデバッグを行うことは非常に重要です。
その際に便利なのが Debug.Print です。

本記事を読むことで、下記のことがわかります。

  • Debug.Printの基本的な使い方・書き方
  • イミディエイトウィンドウでの実行結果の確認方法
  • よくあるエラーとその対策、活用例

VBAマクロ歴3年の私が、できるだけわかりやすく解説いたします。

スポンサードリンク

VBAのdebug.printとは

「debug.print」は、メッセージや計算結果を表示することができる機能です。
マクロの最終結果はもちろん、途中経過なども出力できます。
コードも簡単なため、デバッグ方法として最も手軽に用いられます。

【デバッグとは?】
プログラムの誤り(バグ)を見つけ、手直しをすること。
思い通りに動作しない場合や、エラーが発生した際に原因を特定し、改善する場合に用いられる。

マクロを作成するうえで、必要不可欠といっても過言ではないため、使い方をマスターしておきましょう。
次項で詳しく解説いたします。

スポンサードリンク

debug.printの基本的な使い方

下記のVBAコードを見てください。

Sub メッセージ表示()
    Debug.Print "ようこそマクロの世界へ!"
End Sub

このコードを実行することで、「ようこそマクロの世界へ!」というメッセージを表示させることができます。

「Debug.Print」の後ろには「半角スペース」がありますので忘れないようにしましょう。
また、メッセージは「”(ダブルクォーテーション)」で囲ってください。

マクロの始め方は基礎については、下記記事でわかりやすく解説しております。ご参考ください。

しかしながら、これだけでは何も起こりません。
なぜなら、メッセージを表示させる場所が無いからです。

「Debug.Print」で出力したメッセージを表示させるには、「イミディエイトウィンドウ」というのが必要になります。
では、「イミディエイトウィンドウ」を表示させる方法を解説いたします。

イミディエイトウィンドウの表示方法

コードを書いている「VBA Project」の画面から開始します。

VBA Projectの画面

現在エクセルの画面に居る場合は、
「開発」→「Visual Basic」をクリックして、「VBA Project」に移行してください。
(または「Alt」キーを押しながら「F11」キーを押すことでも移行可)

VBA Projectに移行する方法

「VBA Project」の画面上部にあるメニューから、「表示」「イミディエイトウィンドウ」をクリックします。
(または「ctrl」キーを押しながら「G」キーを押すことでも可)

イミディエイトウィンドウの表示方法

画面の下の方になにやらウィンドウが現れたかと思います。

イミディエイトウィンドウが出現

これが「イミディエイトウィンドウ」です。
これでメッセージを表示させることができるようになりました。
ではコードを実行してみましょう。
画面上部のメニューから、実行ボタンを押します。

実行結果

「イミディエイトウィンドウ」にメッセージ(ようこそマクロの世界へ!)が表示されました。成功です。

過去の自分
過去の自分

それで?
これが何の役に立つの?

今の自分
今の自分

そうですよね。
この方法だけでは、単なる掲示板になってしまっています。

しかしながら「Debug.Print」の本領発揮はここからです。
デバッグをするためのいろいろな使い方を次項で紹介いたします。

スポンサードリンク

Debug.Printを活用したデバッグ術

変数の値を出力

「Debug.Print」を使うことで、変数の中身である値をイミディエイトウィンドウに表示することができます。

Sub 変数の値を出力()
    Dim a As Integer
    a = 10
    Debug.Print a
End Sub
変数の値を表示

変数に値を格納したり、変数の値を変更した際に、キチンと反映されているかを確認したい場合に便利です。

変数や宣言については下記記事をご参考ください。

変数だけを表示すると何の値なのかわかりにくいですよね。
そんな場合は、メッセージ(値)と変数を同時に表示することができます。
「メッセージ」と「変数」の間に「&」をつけてください。

Sub 変数の値を出力()
    Dim a As Integer
    a = 10
    Debug.Print "変数aの値: " & a
End Sub
値と変数を表示

経過を出力

変数の値が都度変更されるマクロでは、経過を表示することができます。

Sub 変数の値を出力()
    Dim a As Integer
    a = 10
    Debug.Print "変数aの値: " & a
    a = 20
    Debug.Print "変数aの値: " & a
    a = 30
    Debug.Print "変数aの値: " & a
End Sub
経過を表示

複数の値を出力

複数の値を表示することもできます。

Sub 複数の値を出力()
    Debug.Print "A", "B", "C" ' タブ区切り
End Sub
タブ区切りを入れた見本

値と値の間に「,(カンマ)」を入れることで、タブキーを押したのと同じ間隔(広め)で値を表示できます。
下記は「,」ではなく、「;(セミコロン)」にした場合の例です。

Sub 複数の値を出力()
    Debug.Print "A"; "B"; "C" ' 結合
End Sub
結合した見本

文字の場合は結合されます。
数値の場合は、スペースキーを押したのと同じ間隔(狭め)で値を表示できます。

Sub 複数の値を出力()
    Debug.Print 1 ; 2 ; 3 ' スペース区切り
End Sub
スペース区切りを入れた見本

値ごとに改行したい場合は、「vbNewLine」を記述してください。

Sub 複数の値を出力()
    Debug.Print "A" & vbNewLine & "B" & vbNewLine & "C" ' 改行
End Sub
改行を入れた見本

条件分岐の動作確認

条件分岐がうまく動作しているかを確認したい場合も「Debug.Print」が便利です。

Sub 条件分岐の動作確認()
    Dim i As Integer
    i = 0
    If i = 0 Then
        Debug.Print "無くなりました"
    ElseIf count <= 5 Then
        Debug.Print "少なめ"
    Else
        Debug.Print "ストックあり"
    End If
End Sub
条件分岐の動作確認

今回の条件分岐は、一般的なIf文を使っています。
If文については下記記事でわかりやすく解説しております。ご参考ください。

ループ文の動作確認

同様にループ処理の確認もできます。

Sub ループ文の動作確認()
    Dim i As Integer
    For i = 1 To 5
        Debug.Print i
    Next i
End Sub
ループ文の動作確認

For文については下記記事でわかりやすく解説しております。ご参考ください。

マクロを作成せずに結果を確認

イミディエイトウィンドウ内に直接計算式を記述して、結果を確認することもできます。

【イミディエイトウィンドウ内】
? 10 + 20

「Enter」キーを押すと、下図のように結果が表示されます。

計算結果を表示
スポンサードリンク

Debug.Printでよくあるエラーと対処法

結果が表示されない原因と解決策

実行結果が表示されない場合は、以下の原因が考えられます。

  • イミディエイトウィンドウが開いていない:「ctrl + G」で表示
  • コードが実行されていない:実行ボタンを押すか、F5(実行)やF8(一行ずつ実行)で確認

オブジェクト変数の中身は表示できない

便利な「Debug.Print」ですが、オブジェクト変数(ワークシートなど)の中身は表示することができません。

Sub エラー()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1)
    Debug.Print ws ' 表示できない
End Sub

ワークシートの名前は表示することができます。

Sub シートの名前を表示()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1)
    Debug.Print ws.Name
End Sub

ブックやセルについても同じです(「.Value」でセルの値は表示可)

スポンサードリンク

最後に

「debug.print」の使い方について解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

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