【マクロVBA】ステップイン・オバー・アウトで動作確認(デバッグ)を行う!指定位置で止めるためには

デバッグ操作

マクロVBAのプログラムの実行については他の記事で大まかに説明しました。


プログラムの実行についての記事はこちらから☟

【マクロ・VBA知識 5】プログラムを1行ずづ実行・すべて実行・指定した位置・個所まで実行する方法 ► 独学エクセル塾 (dokugakuexcel.com)

今回は動作確認(デバッグ)に焦点をあてて紹介したいと思います
プログラムを作成した後に狙い通りに動くか確認すると思いますが
ただ単純にF8で1行ずつ実行するのには時間を要してしまいます。

そこで今回はステップイン・ステップオーバー・ステップアウトについて紹介したいと思います。
指定位置まで実行・指定位置で停止させる記事については次回の記事で紹介します。

それでは見ていきましょう。




■ステップインについて

まずはステップインについて紹介したいと思います。
こちらは冒頭で説明しましたが、1行ずづ実行するデバッグ機能になります。

参考に下図の見本をご覧ください。

B行・C行にそれぞれ数値1・2が存在します。
今回は見本でE列に数値1と2を足して出力するプログラムを用意しました。

Sub 数値1と2の和()

Dim A As Long

For A = 3 To 7 Step 1
Cells(A, 5) = Cells(A, 2) + Cells(A, 3)
Next A

End Sub

こちらのプログラムをステップインで1行ずつ実行してみましょう。
ステップインを行うには「F8」を押します。
メニューの「デバッグ」から「ステップイン」を押してもいいですが「F8」が便利です。

では動作を見てみましょう。

F8を押すごとに1行ずつ実行できてますね。

問題なく実行できてます。
ちなみに「F5」を押すと全実行できますので、ある程度デバッグが終わり、
最後まで実行したい場合は「F5」で全実行してみてください。

■ステップオーバーについて

次はステップオーバーについて紹介したいと思います。
こちらはCall等で別のプロシージャ(プログラム)を実行する際に
ステップオーバーを使用するとそのプロシージャは全実行する機能になります。

先ほどのプログラムを少し複雑にしてみました。
下図の見本をご覧ください。

先ほどは数値1+2の和のみでしたが数値1*2の商の項目をF列に設けました。
例題のプログラムを見てみましょう。

Sub 計算の実行()

Call 数値1と2の和
Call 数値1と2の商

End Sub

Sub 数値1と2の和()

Dim A As Long

For A = 3 To 7 Step 1
Cells(A, 5) = Cells(A, 2) + Cells(A, 3)
Next A

End Sub

Sub 数値1と2の商()

Dim A As Long

For A = 3 To 7 Step 1
Cells(A, 6) = Cells(A, 2) * Cells(A, 3)
Next A

End Sub

和の計算と商の計算のプログラムを各プロシージャにわけて
計算の実行のプロシージャで呼び出す仕組みです。

しかしプロシージャ名「数値1と2の和」は先ほど実行しましたよね。
つまりこの状態だとプロシージャ名「計算の実行」から始まり、「数値1と2の和」は飛ばして
「数値1と2の商」まで実行したいとします

では下図を見てみましょう。
Callの呼び出し位置で通常のステップイン(F8)を押すと
「数値1と2の和」まで飛んで、実行してしまいます

そこで使用するのがステップオーバーです。
では下図をご覧ください。
Callの「数値1と2の和」の呼び出し位置で通常のステップオーバー(Shift+F8)を押すと、「数値1と2の商」の前で止まってくれました

つまり、「数値1と2の和」は自動で実行してくれたことになります。

ステップオーバーですがメニューの「デバッグ」から「ステップオーバー」を押しても同じ動作内容です。

■ステップアウトについて

最後にステップアウトについて紹介したいと思います。
こちらはCall等で呼び出したプロシージャを実行中に押すと
そのプロシージャの全動作を処理し終えて、元のプロシージャに戻ってくれます

では先ほどのプログラム見てみます。

ステップイン(F8)を繰り返し、
Callで「数値1と2の和」に飛びました。

ここでステップイン・ステップオーバーを押しても「数値1と2の和」を1行ずづ実行するだけですが
「数値1と2の和」の確認は済んでいるので飛ばしたいとします。

ここで使えるのが「ステップアウト」です
ステップアウトは「Ctrl + Shift F8」で実行できます。
では実際に押してみましょう。結果はこのようになります。

「数値1と2の和」をすべて実行してくれました

ステップアウトですがメニューの「デバッグ」から「ステップアウト」を押しても同じ動作内容です。

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

コードの実行を続行する (VBA) | Microsoft Learn

■まとめ

いかがだったでしょうか。
動作確認(デバッグ)を行う際に確認が終わったところは飛ばしたいですよね。

なので今回のステップイン・ステップオーバー・ステップアウトを活用して
デバッグを効率よく進めましょう。

今回の記事はCallなどのプロシージャの呼び出しの処理に便利ですが
同じプロシージャ内で指定位置まで実行して飛ばしたい場合もあると思います。

そこで次回は指定した位置まで実行する方法についてまとめてますので是非参考にしてみてください。
次回の記事はこちらから☟

それでは次回の記事でお会いしましょう。

コメント