こんにちは!「デザインもできるシステムエンジニア」のあつもり(プロフィール)です。
ブログラムを開発するうえで避けて通れないバグ。
間違いなく書いたつもりでも、いざプログラムを動かしてみるとエラーが出て上手く動かない、なんてことはよくあることです。
そのバグを見つけて正しく動作するように直す作業がデバッグです。
はじめからバグが全くないプログラムなんてないですから、いかにデバッグ作業を効率的に行うかがプログラム開発では重要になってきます。
今回は初心者にとってわかりにくい「VBAのデバックコマンドの使い方」をゆっくり丁寧に説明していきます。
デバッグの基本となる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行づつ実行する
- ステップオーバー 関数内の処理を一気に実行する
- ステップアウト プロシージャの最後まで一気に処理を実行する
- カーソルの前まで実行 カーソルの手前行まで一気に処理を実行する
最後までお読みいただきありがとうございました!
その使い方だと損してます!
会社員、個人事業主のかたへ。
無料で登録できるAmazonビジネスアカウントを知ってますか?
何と言っても便利なのが請求書払いによる後払いができるということ。
また、承認ルールを作成すれば、業務上必要な物だけに購入を制限することができます。
さらに多くの商品にビジネスアカウント価格が設定されており、個人アカウントより安く購入できます。
このように個人アカウントと比べてビジネスアカウントはお得な機能や特典がついています。
無料で登録できるので、会社員、個人事業主なら使ったほうが得なのは言うまでもありません。