VBAのステップインなどのデバッグコマンドの使い方を初心者向けに丁寧に解説します

こんにちは!「デザインもできるシステムエンジニア」のあつもり(プロフィール)です。

ブログラムを開発するうえで避けて通れないバグ。

間違いなく書いたつもりでも、いざプログラムを動かしてみるとエラーが出て上手く動かない、なんてことはよくあることです。

そのバグを見つけて正しく動作するように直す作業がデバッグです。

はじめからバグが全くないプログラムなんてないですから、いかにデバッグ作業を効率的に行うかがプログラム開発では重要になってきます。

今回は初心者にとってわかりにくい「VBAのデバックコマンドの使い方」をゆっくり丁寧に説明していきます。

レクタングル大336×280

デバッグの基本となる4つのメニュー

まずはデバッグメニューを表示させてみましょう。

VBエディターを開いて、メニューバーの「デバッグ」をクリックします。

ステップイン、ステップアウト、ステップオーバー。はじめのうちは同じような言葉が多くて良く分かりませんよね。

まずはデバッグの基本となる、

  • ステップイン
  • ステップオーバー
  • ステップアウト
  • カーソル行の前まで実行

から説明していきますね。

ブレークポイントを設定する

まずはブレークポイントを設定します。

ブレークポイントとは一時停止ボタンのようなものだと思ってください。

ブレークポイントを設定しないと、プログラムコードのすべての処理が一瞬で終わってしまうため、デバッグすることができません。

ブレークポイントは好きなところに置くことができます。

今回ははじめからプログラムの動きを追いたいので、コマンドボタンがクリックされた直後、PutNumberを呼び出すところにブレークポイントを設定します。

Call PutNumberの左をクリックすると●がつきます。これでブレークポイントが設定されました。

この状態でメニューバーにある「実行」からプログラムを動かします。

ステップイン

ステップインは1行ずつ処理を実行するコマンドです。F8キーを使うと便利です。

関数内のコードも全て実行します。

下のサンプルプログラムを見てください。数字順にプログラムを1行づつ実行します。

1行ずつ実行していくのでプログラムの詳細を把握できます。しかし、ループなどの処理がある場合、1行ずつだと膨大な時間がかかってしまいます。

ステップオーバー

ステップオーバーは1行ずつ処理を実行しますが、関数内のコードは実行しません。

Shiftキー+F8を使うと便利です。

ステップオーバーは、プログラムの全体的な流れを追いたい時に使います。

①の位置でステップオーバーを実行した場合、AddNumberに入らずに②Next yに進み、その後①に戻ります。

ステップアウト

ステップアウトはプロシージャの終わりまで一気に処理を実行します。

Ctrキー+Shiftキー+F8を使うと便利です。

ステップアウトはある程度動きを確認したあとに、プロシージャから出たい時などに使います。

プロシージャPutNumberの①でステップアウトを実行すると、PutNumberの最後まで一気に処理が実行され、メッセージボックスが表示されたあと、ボタンクリックイベントの②End Subまで処理が行われます。

カーソル行の前まで実行

「カーソル行の前まで実行」はカーソル置いた行の一行前まで一気に処理を実行します。この時まだカーソル行の処理は行われていないので注意してください。

Ctrキー+F8を使うと便利です。

For文やDo Loop文などの繰り返し処理の中から抜けたい時などに利用します。ループの中でステップオーバーを使っても10回ボタンを押すのは面倒ですからね。

①の位置にポインタがある時に、②の位置でマウスをクリックしてカーソルを合わせた場合を例にしています。

「カーソル行の前まで実行」を行うことで、For文を一気に実行してメッセージボックス表示の手前まで処理が実行されます。そのあと、「ステップイン」を実行することでメッセージボックスが表示されます。

以上でデバックメニューの使いたかの説明を終わります。

まとめ

いかがでしたか?今回はVBAのデバッグメニューの使い方の説明をしました。4つの基本操作を使い分けて効率よくデバッグしてみてください。

  • ステップイン 1行づつ実行する
  • ステップオーバー 関数内の処理を一気に実行する
  • ステップアウト プロシージャの最後まで一気に処理を実行する
  • カーソルの前まで実行 カーソルの手前行まで一気に処理を実行する

最後までお読みいただきありがとうございました!

デバッグの応用編の記事はこちらをご覧ください。

エクセルVBAでイミディエイトウィンドウを使ってデバッグする方法
イミディエイトウィンドウはデバッグ役立つ便利な機能が備わっています。例えば、プログラムの中にある変数や関数の戻り値を表示させる、関数の実行結果を見る、計算をする、エクセルブックやシートなどのプロパティを見るなんてことができちゃいます。
レクタングル大336×280
レクタングル大336×280

シェアする

  • このエントリーをはてなブックマークに追加

フォローする