【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初心者には、株式会社すごい改善さんの本が分かりやすくておすすめです。

created by Rinker
技術評論社
¥2,178 (2021/12/01 14:22:42時点 Amazon調べ-詳細)

動画で学びたい人には、すごい改善さんのUdemy講座をおすすめします。
【累計36万部著者が教える】たった1日で!まったくの初心者でも最短でExcel VBAを仕事で活用できるようになる講座

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい