このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】デバッグのやり方を初心者向けに解説

2024年4月4日

今回はVBAでデバッグを行う基本的な方法を紹介します。

デバッグの基本である、どこで止めるか、何を確認するか、を中心に説明していきます。

止める方法や確認する方法についても併せて説明するので、安心して読んでください。

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラでVBAの作成請負を受け付けています。お気軽にご相談ください。

1. デバッグはどこで止めるのが良いのか

プログラムを途中で止める方法

先にプログラムを途中で止める2つの方法を紹介します

ブレークポイントで止める

ブレークポイントで止める

1つはブレークポイントで止める方法です。

VBEで左のねずみ色のところをクリックすると、ブレークポイントを設定することができます。

Stopステートメントで止める

もう1つはStopステートメントで、プログラム内でStopと記述すると、その箇所で止まります。

デバッグのコツ:ループと自作関数の前後で止める

Sub OutputRndNum()
'A1~A10のセルに1~10の整数をランダムに入力
    Dim row_i As Long
    Stop
    For row_i = 1 To 10
        Randomize '乱数ジェネレータの初期化
        Cells(row_i, 1) = RtnRndNum(10)
        Stop
    Next
End Sub
Function RtnRndNum(maxNum As Long) As Long
'1~maxNumの整数をランダムに返す
    RtnRndNum = Int((maxNum * Rnd) + 1)
End Function

デバッグで止めるのは、ループ前後と自作関数の前後を推奨します。

上のサンプルコードではForループの直前で止め、Nextで次のループへ進む前に止めています。
ループは少しでも書き間違えると想定外の動作をするため、一旦止めてステップ実行しながら確認を進めましょう。

また、このプログラムではRtnRndNumという自作関数を用いています。

自作関数の前でも一旦止め、想定した返り値が返されているか確認することを推奨します。

2. デバッグは何を確認すれば良いのか

デバッグでは変数の中身が正しいかを確認するのが基本です。

まずは変数の中身を確認する方法を紹介します。

変数の中身を確認する方法(配列/オブジェクト以外)

Long型やString型といった配列/オブジェクト以外では、変数にマウスカーソルを近づけることで変数の中身を調べることができます。

繰り返し確認したい場合は、変数を右クリックして「ウォッチ式の追加」を選択してください。
ウォッチウィンドウに変数の値が常に表示されます。

Debug.Printによって変数の中身をイミディエイトウィンドウに表示する方法もあります。

変数の中身を確認する方法(配列/オブジェクト)

配列/オブジェクト変数の中身を確認する場合はウォッチウィンドウを使用します。

目的のオブジェクトを取得できているかは、NameプロパティやValueプロパティを確認してみてください。
大抵のオブジェクトはこの辺りを見ると目的のオブジェクトか判断することができます。

デバッグのコツ:確認するのは受け渡しされる変数

確認のコツは、受け渡しされる変数を調べることです。

長いプログラムになると、1つの処理のブロックから次のブロックへと変数を通じて結果が受け渡しされていきます。
この受け渡しされる変数を重点的に調べるのです。

この変数の中身が正しければ、そのブロックまでの処理は正常に動作していると判断できるので、ここまではOKとして次のブロックの確認へと進みます。

この作業を繰り返していくことによって、どのブロックに問題があるのかを炙り出していくことができる訳です。

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラでVBAの作成請負を受け付けています。お気軽にご相談ください。

VBA

Posted by やろまい