マクロのステップインとは?初心者でもわかるVBAのデバッグ基本操作を解説

マクロのステップインとは?初心者でもわかるVBAのデバッグ基本操作を解説

本記事には広告(PR)が含まれます。
くわしくは プライバシーポリシー をご確認ください。

マクロを実行したときに、なぜかうまく動かない…そんな経験はありませんか?
エラーの原因を突き止めるには、マクロの動作を一行ずつ確認する「デバッグ」の知識が役立ちます。

その中でも、よく使われるのが「ステップイン」という機能です。
この記事では、ステップインの意味や操作方法、デバッグでの活用例を初心者向けにわかりやすく解説します。

また、ステップオーバーやステップアウトとの違いや、効率的な使い方のコツについても紹介しますので、ぜひ参考にしてみてください。


目次

ステップインとは?基礎から解説

ステップインの意味

ステップインとは、VBAマクロを1行ずつ実行しながら処理内容を確認できる機能です。
エラーの原因を調べたり、処理の流れを追ったりする際にとても便利です。

たとえば、次のようなコードがあったとします。

Sub Sample()
Dim a As Integer
a = 10
MsgBox a
End Sub

ステップインを使えば、この3行の処理を1行ずつ実行しながら、途中の値や挙動を確認できます。
このように、プログラムの“中身”をのぞきながら進めていくのがステップインの特徴です。

下の画像は、ステップインでコードを1行ずつ実行している状態です。黄色くハイライトされている行が「これから実行される1行」で、このあとメッセージボックスが表示されるタイミングです。

Excelのマクロにてステップインしている様子

ステップオーバー・ステップアウトとの違い

ステップインとよく似た機能に、「ステップオーバー」や「ステップアウト」があります。
どれもデバッグ中に使用する操作ですが、それぞれ処理の進み方に違いがあります。

以下に、3つの機能の違いをまとめてみましょう。

操作名 内容 よく使う場面
ステップイン 1行ずつ処理を実行し、呼び出されたSubやFunctionの中にも入る 詳細な動作を追いたいとき
ステップオーバー 1行ずつ処理を実行するが、呼び出し元のSubやFunctionの中には入らない 処理の流れだけを見たいとき
ステップアウト 現在のSubやFunctionの処理を一気に終わらせて外に出る 深い処理に入りすぎたときや中断時

例:ステップインとステップオーバーの違い

Sub Main()
 Call SubA
 MsgBox "完了"
 End SubSub SubA()
 MsgBox "SubA"
End Sub
  • 「ステップイン」の場合:
     Call SubA の行で SubA の中に入って処理を見る

  • 「ステップオーバー」の場合:
     SubA の中には入らず、次の MsgBox "完了" に進む


慣れてくると、場面に応じてこれらを使い分けることで、効率よくデバッグできます。
特にSubやFunctionを多用したマクロでは、この違いを理解しておくととても便利です。

下の画像は、マクロ実行中に Call SubA の行で停止している状態です。
このように、処理が進行している最中であれば「デバッグ」メニューから**ステップオーバー(Shift + F8)ステップアウト(Ctrl + Shift + F8)**を選ぶことができます。

ステップオーバー・ステップアウトメニュー

補足:これらのメニューは、マクロの実行がまだ始まっていないとグレー表示になり、選ぶことができません。
使いたいときは、F8キーでSubやFunctionの呼び出し行まで進めるか、ブレークポイントを設定してマクロを一時停止させると使えるようになります。

→この後の章で、ブレークポイントの使い方についても詳しくご紹介します。

ステップインの実行方法(操作手順)

ステップインは、VBAエディタ(VBE)上で簡単に操作できます。ここでは、3つの方法を紹介します。

■ 方法①:ショートカットキー「F8」で実行

最も手軽なのが F8キー を使う方法です。

手順は以下の通りです。

  1. Excelでマクロのあるブックを開きます

  2. Alt + F11 でVBE(Visual Basic Editor)を起動します

  3. 実行したいマクロのプロシージャを表示し、カーソルを当てます

  4. F8キーを押すと、1行ずつ実行されます

F8を繰り返し押すことで、1行ずつ順に処理が進みます。途中で変数の値などを確認しながら、どこで不具合が発生するかを把握できます。

■ 方法②:メニューバーから操作する

ショートカットに慣れていない方は、VBEのメニューから操作することもできます。

  • メニュー → [デバッグ]→[ステップ イン]
    または

  • ツールバーの「ステップイン(虫眼鏡のようなアイコン)」をクリック

マウス操作でも直感的にデバッグが可能です。

補足:F8キーの方がラク!

ステップインは「デバッグ」メニューからも操作できますが、毎回2回クリックする必要があり、少し手間がかかります。
そのため、実際には キーボードのF8キーを使ってステップインを行うのが最も簡単でおすすめです。

よく使う場合は、[表示]→[ツールバー]→[デバッグ] からデバッグ用のアイコンを常時表示する設定も可能です。

デバッグツールバーの表示

デバッグツールバーについて詳しくは公式サイトをご参考ください。
[デバッグ] ツール バー |Microsoft Learn

ただし、まずはF8キーを覚えるだけで十分です!

■ 方法③:処理の途中からステップインする

処理の一部だけを確認したいときには、マクロを一時停止させてから、**「次のステートメントの設定」**を使うことで、特定の行からステップ実行を再開することができます。

これは、F8キーで1行ずつ進めるのではなく、途中の処理をスキップして確認したいときに便利です。

メニューの場所:
[デバッグ]→[次のステートメントの設定](Ctrl + F9)

次のステートメントの設定メニュー

補足:この操作は**マクロを実行中にしか使えません。**また、ジャンプ先として選べる行には制限があり、End Sub などには設定できません。

実行位置を強制的に変える操作なので、誤って使うと変数の初期化が行われないまま次の処理が走る可能性もあります。慣れないうちは、通常のステップイン(F8)やブレークポイントの併用をおすすめします。

ステップインを使ったデバッグと活用方法

エラー箇所の特定に活用する

マクロを実行したときにエラーが発生しても、エラーメッセージだけでは具体的にどこで何が起きたのかはわかりにくいことがあります。
そんなときに便利なのが、「ステップイン」で1行ずつ処理を追いながら確認する方法です。


■ エラー調査の基本手順(ステップイン活用例)

以下のようなマクロがエラーになるケースを考えてみましょう。

Sub SampleDebug()
 Dim a As Integer
 Dim b As Integer
 a = 10
 b = 0
 MsgBox a / b ' ← 実行時エラー「ゼロ除算」
End Sub

通常の実行では、エラーが発生しても「どこで?」という情報しかわかりません。

そこで、F8キーでステップインしながら1行ずつ確認していくと、

  1. a = 10 → 問題なし

  2. b = 0 → まだ問題なし

  3. MsgBox a / bこの行で止まり、エラー内容が明確にわかる

というように、どの行で・何が原因でエラーになったかをピンポイントで把握できます。

下の画像は、F8キーでステップインして MsgBox a / b の行に到達した直前の状態です。
この処理では、変数 b が「0」のため、次の行で「0除算エラー」が発生することが予測できます。

ステップインでエラーが発生する行に移動

実際に次のステップを実行すると、「実行時エラー ’11’: 0で除算しました」というメッセージが表示され、マクロが強制停止します。
このように、エラー発生箇所を明確に確認できるのがステップインの利点です。

エラーの発生した行を実行するとエラーメッセージが表示される


■ エラー行がすぐに特定できるメリット

  • 原因の絞り込みが早くなる

  • 大きな処理でも該当箇所だけ見直せばよくなる

  • 数式・参照の間違いなど、目では気づきにくいロジックのミスを発見しやすい


とくに**「実行時エラー」が出たときに、原因がわからず困る初心者の方**には、ステップインは非常に強力なデバッグ手段です。

繰り返し処理の動作確認

マクロで**繰り返し処理(ループ)**を使っていると、思った通りに動かないことがあります。
そんなときも、ステップインを使って1回ずつループを追いかけて確認することで、処理の流れや誤動作を見つけやすくなります。


■ 例:Forループの中身を確認したい場合

Sub LoopSample()
 Dim i As Integer
 For i = 1 To 3
  MsgBox "iの値は " & i
 Next i
End Sub

このようなシンプルなループでも、実際にF8キーで1行ずつステップインしていくことで、以下のように確認できます。

  • i = 1 → メッセージ表示「iの値は 1」

  • i = 2 → メッセージ表示「iの値は 2」

  • i = 3 → メッセージ表示「iの値は 3」

そして、i = 4になった時点でループが終了する流れを正確に把握できます。

↓ループ変数iにマウスを重ねると、現在の値(この場合は1)がツールチップとして表示されます。
※より正確な確認にはイミディエイトウィンドウの活用もおすすめです。

ループ処理中のステップインと変数の確認

このように、F8キーで1行ずつ処理を追いかけることで、ループ内の処理や変数の動きを細かく確認できます。

補足:イミディエイトウィンドウを使えば、MsgBoxを使わなくても変数の値を確認できます。

たとえば、? i と入力してEnterを押すだけで、現在のiの値がその場で表示されます。
実際の操作方法は、この後の章で詳しく解説します。

イミディエイトウィンドウを利用して変数の値を確認


■ 実務でよくある失敗例も発見しやすい

たとえば、次のようなミスに気づきやすくなります。

  • ループの終了条件を間違えて、永久ループになっていた

  • ループ内の変数に値がうまく入っていなかった

  • 行番号や列番号がずれていた

ステップインで確認することで、「処理が意図通りに進んでいるか」「変数の値がどう変化しているか」を1ステップずつ目視できるため、ミスに早く気づけるのが大きなメリットです。

ブレークポイントと組み合わせて使う

マクロが長くなると、すべての行をステップインで確認するのは非効率です。
そんなときは、「ブレークポイント」とステップインを組み合わせて使うと、必要な場所から確認を始められて便利です。


■ ブレークポイントとは?

ブレークポイントとは、VBAの実行を一時停止させたい行に設定するマーカーです。
コードにブレークポイントを設定しておくと、その行に達した時点でマクロの実行が自動的に止まり、そこからステップインで1行ずつ確認できます。


■ ブレークポイントの使い方

  1. VBE(Visual Basic Editor)で、停止させたい行の左端(灰色のバー)をクリック

  2. 赤い丸(ブレークポイント)が表示されます

  3. マクロを通常実行(F5)すると、ブレークポイントの行で自動停止します

  4. そこからF8でステップインが可能に!

下の画像のように、停止させたい行の左側(灰色のバー)をクリックすると、赤丸(ブレークポイント)が表示されます。
この状態でマクロをF5で実行すると、その行でマクロが自動的に停止し、そこからF8キーでステップインを始めることができます。

ブレークポイントの設定


■ ブレークポイント×ステップインの活用例

例えば、以下のような長いマクロがあった場合:

Sub LongMacro()
' 前半:初期設定や準備
' ・・・' 本題:ここから処理を確認したい
 Dim i As Integer
 For i = 1 To 5
  Cells(i, 1).Value = i * 10
 Next i
End Sub
  • For i = 1 To 5 の行にブレークポイントを設定

  • 通常実行(F5)→そこで停止

  • **そこからステップイン(F8)**で処理の流れをチェック

ブレークポイントを設定してマクロを実行

こうすることで、「前半の準備部分はスキップして、本題のループ処理だけ確認したい」といった効率的なデバッグが可能になります。


長いマクロや複雑な処理をデバッグするときは、
「ブレークポイントで停止」→「ステップインで詳細確認」
という流れが、時短にもミス発見にも効果的です。

効率的なデバッグのコツ

ステップインだけでもマクロの動作確認はできますが、デバッグをもっと効率よく行うには、補助的な機能の活用がカギになります。
ここでは、初心者でもすぐに使える2つの便利な機能を紹介します。


■ ウォッチ式で変数の値を追う

ウォッチウィンドウを使えば、特定の変数の値をリアルタイムで確認できます。
ステップインで処理を1行ずつ進めながら、変数がどう変化するかを見たい場合にとても便利です。

使い方:

  1. 変数を選択した状態で右クリック →[ウォッチ式の追加]を選択
    ウォッチ式の追加

  2. 画面下部にウォッチウィンドウが表示され、変数の値や型が表示されます
    ウォッチ式の表示例

  3. ステップインで進めるたびに、自動で値が更新されていきます


■ イミディエイトウィンドウで直接確認・実行

イミディエイトウィンドウは、変数の値を表示したり、1行だけマクロを試しに実行できるウィンドウです。
変数の中身がどうなっているか確認したいときや、式の結果を試したいときに重宝します。

使い方:

  1. Ctrl + G でイミディエイトウィンドウを表示

  2. 以下のように入力して Enter キーを押すと、結果が表示されます

? a ' 変数aの中身を表示
? Range("A1").Value * 2 ' 数式の確認

イミディエイトウィンドウを利用して変数の値を確認


■ これらを組み合わせることで…

  • ステップイン:処理の流れを確認

  • ウォッチ式:変数の値の変化を追跡

  • イミディエイト:気になる部分だけ試してチェック

このように、VBAのデバッグ機能は組み合わせて使うことで、よりスムーズで的確な確認が可能になります。

初心者がやりがちな失敗と注意点

ステップインはとても便利な機能ですが、使い方を間違えると逆に混乱したり、時間がかかってしまうこともあります。
ここでは、初心者が陥りやすい代表的なミスや注意点を紹介します。


すべてF8で進めてしまい、時間がかかる

F8キーでステップインを繰り返しすぎると、何百行もあるコードを1行ずつ進めることになり、非常に非効率です。
特にループや長い前処理があるときは、ブレークポイントやステップオーバーを併用して、確認したい箇所に絞りましょう。


 SubやFunctionの中に入りすぎて迷子になる

ステップインは呼び出されたSubやFunctionの中にも入っていくため、処理が細かく分かれているコードでは、どんどん深くなってしまうことがあります。

→そんなときは、ステップオーバー(Shift + F8)で中に入らず進めることで、全体の流れを見失わずに確認できます。


変数の変化を見落とす

ステップイン中に変数の値を追っていないと、値がいつ、どこで変わったのかを見逃してしまうことがあります。
変数の変化をしっかり確認したいときは、ウォッチウィンドウを活用すると安心です。


 イミディエイトウィンドウやウォッチの存在を知らない

「ステップインだけがデバッグ」と思ってしまうと、他の便利なツールを使わずに損をしてしまうことがあります。
今回紹介したように、複数の機能を組み合わせることで、よりスムーズにトラブル解決ができます。


 まとめ:デバッグは“全部F8”しないのがコツ!

  • F8で全部追うのではなく、必要な場所だけを見る

  • ブレークポイントで効率化

  • 補助ツールを活用して、確認漏れを防ぐ

ステップインをうまく使いこなせば、マクロのエラー原因も早く見つけられ、修正力・理解力もぐんとアップします。ぜひ活用してみてください!

【関連記事】

※外部リンク※

※参考書籍 (PR)

※本ボックスにはアフィリエイトリンク(PR)が含まれます。
くわしくは プライバシーポリシー へ。