プログラムを中断すると、1行ずつ実行してみたり、途中で変数の値を確認できます。
デバッグでよく使う機能が、「ステップ イン」、「ステップ オーバー」、「ステップ アウト」の3つです。まずはこの3つの違いをつかんでください。
【1】Access で VBEを起動し、標準モジュールの test4 を表示します。
*VBEは「Altキー」+「F11キー」で起動できます。
【2】main()の1行目の左部分をマウスでクリックします。
*デバッグツールバーの「ブレークポイントの設定/解除」でも可能
【3】ブレークポイントが設定されました。
左側にマークが表示され、ブレークポイントを設定した行の色が変わります。
【4】Subプロシージャの main() から、プログラムを実行すると、ブレークポイントを設定した行で、プログラムが中断します。
*黄色く反転している行は、まだ実行されていません。(重要)
【5】デバッグツールバーの「ステップ オーバー」をクリックします。
【6】イミディエイト ウィンドウに、1行結果が表示されました。
【7】続けて「ステップ オーバー」を数回クリックして、「End Sub」まで処理を進めると、すべての結果が表示されます。
*まだ End Sub は行なわれていません。
【8】さらに「ステップ オーバー」をクリックすると、プログラムがすべて実行された状態になります。
*黄色く反転している行が無い状態
【9】イミディエイト ウィンドウをクリアしてください。
【10】もう一度、Subプロシージャの main() から、プログラムを実行し、今度は「ステップ イン」でプログラムを進めてください。
【11】「ステップ イン」の場合は、Functionプロシージャの中に入りました。
ステップオーバーとステップインの違いがわかりましたか?
ステップオーバーは、呼び出したプロシージャの処理が済んだ状態で、そのまま次の行に移ります。それに対してステップインは、呼び出したプロシージャの中まで進みます。
【12】キーボードの「F8キー」はステップインのショートカットです。何度か押して For Next ステートメントを数回転してください。
【13】途中でマウスポインタを変数に合わせると、値が表示されます。
【14】次はまだ Functionプロシージャの中にいる状態の時に、「ステップ アウト」をクリックします。
【15】ステップ アウトは、Functionプロシージャの残りの処理を全て行なった後、呼び出し元の Subプロシージャに戻ります。
【16】ステップ イン、ステップ オーバー、ステップ アウトの違いを意識しながら、何度もプログラムを追ってみてください。またブレークポイントの場所を変えたり、複数設定してみてください。
【解説】
(1)デバッグが終わり、プログラムの実行を中断する必要が無くなれば、ブレークポイントのマークをクリックするだけで、解除できます。
(2)プログラムの実行を中断している時に、イミディエイト ウィンドウで、変数の値をチェックすることもできます。
*この方法は、変数に SQL文などの長い文字列が代入されている時に便利です。
(3)「継続」をクリックすると、次のブレークポイントまで処理が進みます。
もしブレークポイントがなければ、最後まで実行されます。
・複数あれば次のブレークポイントまで
(4)プログラムを中止したい場合は、「リセット」をクリックします。
(5)ショートカット
・「F8キー」 ステップイン
・「Shift + F8キー」 ステップオーバー
・「Ctrl + Shift + F8キー」 ステップアウト
慣れてくると、ブレークポイントを何処と何処に設定して、ステップ インを使うか、ステップ オーバーを使ったほうが良いのかという判断が、簡単にできるようになります。
そうなるとデバッグの技術も上達します。