答え
VBAのデバッグで使う「ステップイン(F8)」と「ステップオーバー(Shift+F8)」の違いは、呼び出し先のプロシージャに入るかどうかです。F8は呼び出し先のコードまで追跡し、Shift+F8は呼び出し先を一気に処理して次の行に進みます。
詳細解説
ステップイン(F8)
- 動作:コードを1行ずつ実行し、もし他のプロシージャや関数を呼び出した場合、その中に「入り込んで」さらに1行ずつ実行する。
- 用途:呼び出し先の処理内容まで確認したいとき。
- 例:
Sub Procedure1()
Dim i As Integer
For i = 1 To 10
Procedure2 (i) ' ←ここでF8を押すとProcedure2の中へ入る
Next i
End Sub
VBステップオーバー(Shift+F8)
- 動作:コードを1行ずつ実行するが、呼び出し先のプロシージャや関数には「入らず」、その処理をまとめて実行して次の行へ進む。
- 用途:呼び出し先の詳細を追跡する必要がなく、現在のプロシージャだけを確認したいとき。
- 例:
上記の例でProcedure2(i)の行でShift+F8を押すと、Procedure2の処理は一気に実行され、次のNext iに進む。
ポイントまとめ
- F8(ステップイン) → 呼び出し先のプロシージャに入る
- Shift+F8(ステップオーバー) → 呼び出し先には入らず、処理をまとめて実行
- 呼び出し先がない単純なコードでは、両者の動きは同じになる。
補足
さらに「ステップアウト(Ctrl+Shift+F8)」という操作もあり、これは現在のプロシージャを最後まで実行して呼び出し元に戻る機能です。複雑なデバッグでは「イン」「オーバー」「アウト」を使い分けると効率的です。
要するに: 呼び出し先の処理を詳しく追いたいなら「ステップイン」、呼び出し先をスキップして流れだけ確認したいなら「ステップオーバー」を使うのが正解です。

