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

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

2024年4月4日

今回は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上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

created by Rinker
技術評論社
¥3,608 (2024/12/02 20:25:22時点 Amazon調べ-詳細)
VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい