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

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

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


Excelのマクロを実行したときに、

「どの行でエラーが起きているのかわからない」
「マクロがどの順番で動いているのか確認したい」
「変数に正しい値が入っているか調べたい」

と困ったことはありませんか?

そんなときに役立つのが、VBAのステップインというデバッグ機能です。

ステップインを使うと、マクロを1行ずつ実行しながら、処理の流れや変数の値を確認できます。

この記事では、ステップインの意味やF8キーを使った操作方法をはじめ、ステップオーバー・ステップアウトとの違い、エラー箇所の調べ方まで初心者向けに解説します。



目次

ステップインとは?VBAで1行ずつ実行する基本機能

ステップインの意味とできること

ステップインとは、VBAのコードを1行ずつ実行しながら動作を確認する機能です。

通常、マクロを実行すると、コードに書かれた処理が連続して進みます。

しかし、エラーが発生したり、想定と違う結果になったりした場合、どの処理が原因なのか判断しにくいことがあります。

ステップインを使えば、処理を1行ずつ進められるため、どのような順番で実行されているのか確認できます。

たとえば、次のようなマクロがあるとします。

Sub Sample()
    Dim a As Integer
    Dim b As Integer

    a = 10
    b = 5

    MsgBox a + b
End Sub

このマクロでは、変数 a と b に数値を代入し、その合計をメッセージボックスに表示します。

通常実行では、これらの処理が続けて行われます。

一方、ステップインを使うと、代入処理やメッセージの表示を順番に確認できます。

VBAでステップインを実行し、次に実行する行が黄色く表示された画面

ステップ実行中は、VBAエディタに黄色く強調された行が表示されます。

黄色く表示されているのは、これから実行される行です。F8キーを押すとその行が実行され、次に実行する行へ黄色い表示が移動します。

なお、ステップインはコードを眺めるだけの機能ではありません。実際にマクロを実行するため、セルの書き換えやファイル操作なども行われます。


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

VBAのデバッグには、ステップイン以外にも「ステップオーバー」と「ステップアウト」があります。

いずれも処理の流れを確認するための機能ですが、SubやFunctionを呼び出したときの動きが異なります。

操作 ショートカットキー 動作
ステップイン F8 呼び出し先のSubやFunctionの中にも入り、1行ずつ確認する
ステップオーバー Shift+F8 呼び出し先の処理をまとめて実行し、呼び出し元の次の行へ進む
ステップアウト Ctrl+Shift+F8 現在のプロシージャの残りを実行し、呼び出し元へ戻る

たとえば、次のように別のSubを呼び出すマクロを考えてみましょう。

Sub Main()
    MsgBox "処理開始"
    Call SubA
    MsgBox "処理終了"
End Sub

Sub SubA()
    MsgBox "SubAを実行"
End Sub

Main の Call SubA に到達したとき、どの操作を選ぶかによって確認できる範囲が変わります。

ステップインの場合

SubA の中に入り、MsgBox "SubAを実行" の行も確認できます。

ステップオーバーの場合

SubA の処理を実行しますが、内部を1行ずつ確認せず、Main の次の行へ進みます。

ステップアウトの場合

すでに SubA の中でステップ実行している場合、残りの処理をまとめて実行し、呼び出し元の Main に戻ります。

途中のコードは実行されますが、1行ずつ停止して確認することはありません。

VBAのデバッグメニューに表示されたステップオーバーとステップアウト

呼び出し先の処理に問題がありそうならステップイン、呼び出し先の動作を細かく調べる必要がなければステップオーバーを使うと効率的です。

ステップインの実行方法|F8キーで1行ずつ確認する

ステップインを実行する基本的な方法は、VBAエディタでF8キーを押すことです。

操作手順は次のとおりです。

  1. Excelで対象のブックを開きます。
  2. Alt+F11 キーを押してVBAエディタ(VBE)を開きます。
  3. 確認したいマクロのコード内にカーソルを置きます。
  4. F8 キーを押します。
  5. 黄色く表示された行を確認しながら、F8キーで処理を進めます。

最初にF8キーを押すと、マクロがステップ実行の状態になり、次に実行する行が黄色く表示されます。

その後、F8キーを押すたびに処理が進みます。

F8キーでVBAのコードを1行ずつ実行している画面

メニューからステップインを実行する方法

F8キーが使いにくい場合は、VBAエディタのメニューからも操作できます。

[デバッグ]→[ステップ イン]を選択してください。

また、デバッグ操作を繰り返し使う場合は、デバッグツールバーを表示しておくと便利です。

ツールバーは、[表示]→[ツールバー]→[デバッグ]から表示できます。

VBAエディタでデバッグツールバーを表示するメニュー

ノートパソコンなどでは、F8キーに音量調整などの機能が割り当てられている場合があります。その場合は、Fn+F8キーを試してみましょう。

途中の行までまとめて実行したい場合

コードが長い場合、最初から何度もF8キーを押すのは大変です。

そんなときは、[カーソル行の前まで実行](Ctrl+F8)が便利です。

確認したい行にカーソルを置いて実行すると、途中の処理を実行しながら、その行の直前で一時停止します。

カーソルを置いた行自体は、まだ実行されていません。

その行から詳しく確認したい場合は、続けてF8キーを押してステップ実行できます。

ただし、途中のコードを飛ばすわけではなく、そこまでの処理は実際に実行されます。

なお、似た操作に[次のステートメントの設定](Ctrl+F9)がありますが、こちらは次に実行する位置を変更する機能です。

VBAのデバッグメニューにある次のステートメントの設定
[次のステートメントの設定]は実行位置を変更する機能です。[カーソル行の前まで実行]とは動作が異なります。

[カーソル行の前まで実行](Ctrl+F8)は途中の処理を実行しますが、[次のステートメントの設定](Ctrl+F9)では、実行位置の変更によって途中の処理を飛ばすことがあります。

処理を飛ばすと、必要な変数の設定などが行われず、思わぬエラーにつながる可能性があります。

初心者の方は、まずF8キーによるステップインと、必要に応じてCtrl+F8を使う方法から覚えるのがおすすめです。


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

ステップインでエラー箇所を特定する方法

ステップインが特に役立つのは、マクロのどこでエラーが発生するのか調べたいときです。

たとえば、次のコードを見てみましょう。

Sub SampleDebug()
    Dim a As Integer
    Dim b As Integer

    a = 10
    b = 0

    MsgBox a / b
End Sub

このコードでは、変数 b に0を代入したあと、a / b の計算を行っています。

しかし、0で割り算をすることはできないため、実行時エラーが発生します。

ステップインを使って確認すると、a = 10、b = 0 と順番に処理が進み、MsgBox a / b の行を実行したときにエラーが発生することがわかります。

VBAのステップインでゼロ除算エラーが発生する行を確認している画面

VBAで0による除算を実行した際に表示される実行時エラー11

エラーダイアログで[デバッグ]を選択できる場合は、問題が発生した行をVBAエディタ上で確認できます。

ステップインでは、エラーが発生する直前の変数の値や処理の流れも確認できるため、原因を絞り込みやすくなります。

なお、エラーが発生した行がわかっても、その行だけに原因があるとは限りません。

今回の例では、割り算を行う行だけでなく、変数 b に0が代入されていることも確認する必要があります。


繰り返し処理(For文)の動作を確認する

ステップインは、For文などの繰り返し処理を確認するときにも便利です。

たとえば、次のマクロを見てみましょう。

Sub SampleLoop()
    Dim i As Integer

    For i = 1 To 3
        MsgBox i
    Next i
End Sub

このマクロでは、変数 i の値を1から3まで変えながら、メッセージボックスに表示します。

通常実行では、メッセージが順番に表示されます。

ステップインを使うと、For文の開始、メッセージ表示、Next文による繰り返しという処理の流れを確認できます。

また、ステップ実行で一時停止している間は、コード内の変数 i にマウスポインターを合わせることで、その時点の値を確認できます。

For文のステップ実行中に変数iの値を確認している画面

繰り返し処理で想定と違う結果になる場合は、変数の値がどのタイミングで変化しているかを調べると、原因を見つけやすくなります。


ブレークポイントとステップインを組み合わせる

長いマクロを最初から1行ずつ実行すると、確認したい場所に到達するまで時間がかかります。

そんなときに役立つのが、ブレークポイントです。

ブレークポイントとは、マクロを指定した行で一時停止させる機能です。

たとえば、処理の途中にあるFor文だけを詳しく調べたい場合、その手前にブレークポイントを設定しておきます。

操作手順は次のとおりです。

  1. 停止したい実行可能なコード行にカーソルを置きます。
  2. F9 キーを押してブレークポイントを設定します。
  3. F5 キーでマクロを実行します。
  4. ブレークポイントで停止したら、F8キーでステップ実行します。

ブレークポイントを設定した行は、通常、赤茶色の背景で表示されます。

VBAのコード左端にブレークポイントを設定した画面
コードの左端をクリックすると、ブレークポイントを設定できます。

ブレークポイントで停止したあとにステップインを使えば、確認したい部分だけを詳しく調べられます。

ブレークポイントでVBAの実行が一時停止している画面

なお、ブレークポイントはコメント行や空白行などには設定できません。実際に処理が行われる行を選択してください。

設定を解除する場合は、対象の行で再度F9キーを押します。


ウォッチ・イミディエイトで変数の値を確認する

マクロの処理を確認するときは、コードの実行順序だけでなく、変数にどのような値が入っているかも重要です。

変数の値を調べる方法には、主に次の3つがあります。

確認方法 特徴
マウスポインターを合わせる 変数の現在値を手軽に確認できる
ウォッチウィンドウ 指定した変数や式の値を継続して確認できる
イミディエイトウィンドウ 変数の値や式の結果をその場で確認できる

ウォッチウィンドウで値の変化を確認する

ウォッチウィンドウを使うと、指定した変数や式の値を一覧で確認できます。

登録するには、確認したい変数を選択して右クリックし、[ウォッチ式の追加]を選びます。

VBAエディタでウォッチ式を追加する右クリックメニュー

また、VBAエディタの[デバッグ]→[ウォッチ式の追加]からも登録できます。

繰り返し処理の中で値が変化する場合など、毎回マウスポインターを合わせるのが面倒なときに便利です。

ウォッチウィンドウに登録した変数の値を表示している画面

イミディエイトウィンドウで値を確認する

イミディエイトウィンドウでは、変数の値や計算結果を確認できます。

表示するには、VBAエディタで Ctrl+G キーを押します。

たとえば、変数 i を確認したい場合は、マクロが一時停止している状態で次のように入力し、Enterキーを押します。

? i

現在の実行位置から参照できる変数であれば、その値が表示されます。

VBAのイミディエイトウィンドウで変数iの値を確認している画面

変数が想定どおりに変化しているかを調べることで、エラーの原因だけでなく、計算結果が合わない原因も探しやすくなります。


ステップインを効率よく使うコツ

ステップインは便利ですが、すべてのコードを最初から最後まで1行ずつ確認する必要はありません。

効率よくデバッグするには、調べたい内容に合わせて操作を使い分けるのがポイントです。

たとえば、

  • 処理の流れを詳しく調べたい:ステップイン(F8)
  • 呼び出し先の内部を確認する必要がない:ステップオーバー(Shift+F8)
  • 現在のSubやFunctionから抜けたい:ステップアウト(Ctrl+Shift+F8)
  • 特定の場所から確認したい:ブレークポイント(F9)
  • 変数の値を調べたい:ウォッチ・イミディエイトウィンドウ

といった使い分けができます。

特に、長いマクロではブレークポイントで確認したい場所まで進み、そこからステップインする方法がおすすめです。


初心者が気をつけたい注意点

ステップインを使う際は、次の点に注意しましょう。

ステップ実行でもマクロの処理は実行される

ステップインは処理を一時停止しながら進める機能ですが、コード自体は実際に実行されます。

セルの値を書き換える処理や、ファイルを保存・削除する処理などが含まれている場合は、ステップ実行でも変更が行われます。

また、VBEの[実行]→[リセット]でマクロを終了しても、すでに行われた変更が自動的に元へ戻るわけではありません。

実務用のファイルで確認するときは、事前にバックアップを取り、できればコピーしたテスト用ファイルで試しましょう。

黄色い行は「次に実行する行」

ステップ実行中に黄色く表示されるのは、基本的に次に実行される行です。

黄色く表示されているだけでは、その行の処理が完了したとは限りません。

変数の値を確認するときは、どの行まで実行されたのかを意識すると、勘違いを防ぎやすくなります。

呼び出し先の処理に入りすぎたら操作を切り替える

ステップインを続けていると、別のSubやFunctionの中に入り、元の処理がわかりにくくなることがあります。

そのような場合は、ステップアウトで呼び出し元に戻ったり、次からはステップオーバーを使ったりすると確認しやすくなります。

ただし、ステップアウトも残りの処理を実行する操作です。処理を取り消したり、実行せずに飛ばしたりする機能ではありません。


マクロのステップインに関するよくある質問(FAQ)

ステップインとステップオーバーの違いは何ですか?

ステップインは、VBAのコードを1行ずつ実行し、呼び出されたSubやFunctionの中まで確認できる機能です。
一方、ステップオーバーは、呼び出し先の処理をまとめて実行し、呼び出し元の次の行へ進みます。
呼び出し先の中身まで調べたいときはステップイン、処理の流れだけ確認したいときはステップオーバーを使うと便利です。

F8キーを押してもステップインできない場合は?

まず、VBAエディタ(VBE)がアクティブになっているか確認しましょう。
また、ノートパソコンなどでは、F8キーが音量調整などの機能に割り当てられている場合があります。その場合は、Fn+F8キーを試してください。
操作できない場合は、VBEの[デバッグ]→[ステップ イン]から実行できるか確認してみましょう。

ステップインを途中で終了するには?

ステップ実行を途中で終了したい場合は、VBEの[実行]→[リセット]を選択します。
ただし、すでに実行したセルの変更やファイル操作などが元に戻るわけではありません。
実務で使用するマクロは、事前にテスト用のファイルを用意しておくと安心です。

マクロを1行ずつ実行せず、途中から確認する方法はありますか?

はい。ブレークポイントを使えば、確認したい行まで通常実行し、その位置で一時停止できます。
停止後にF8キーを押すことで、そこから1行ずつ処理を確認できます。
また、[カーソル行の前まで実行](Ctrl+F8)も利用できます。

ステップインで変数の値を確認できますか?

はい。ステップ実行中に変数へマウスポインターを合わせると、現在の値を確認できます。
複数の変数を継続して確認したい場合はウォッチウィンドウ、特定の値をその場で確認したい場合はイミディエイトウィンドウが便利です。

マクロのエラーを、自分で解決できるようになりたい方へ

ステップインでエラーの場所がわかっても、「なぜエラーになるのか」「どう修正すればよいのか」で迷うことはありませんか?

VBAの基本的な書き方や処理の流れを理解しておくと、エラーの原因も見つけやすくなります。

初心者向けに、VBAを独学で学ぶ手順やおすすめ教材をまとめています。

▶ VBAを独学で学ぶには?初心者でもわかるマクロの勉強手順とおすすめ教材


まとめ|ステップインでマクロの動きを確認しよう

ステップインは、VBAのコードを1行ずつ実行しながら、処理の流れやエラーの原因を調べるための機能です。

F8キーを使うだけで始められるため、VBA初心者の方にも覚えておきたい基本操作のひとつです。

ただし、長いマクロをすべて1行ずつ確認する必要はありません。

ステップオーバーやステップアウト、ブレークポイントなどを組み合わせることで、確認したい部分を効率よく調べられます。

まずは簡単なマクロを使い、F8キーで1行ずつ実行するところから試してみてください。

処理の流れや変数の変化が見えるようになると、マクロのエラーにも落ち着いて対応しやすくなります。


【関連記事】

※外部リンク※


マクロのステップインとは?初心者でもわかるVBAのデバッグ基本操作を解説
最新情報をチェックしよう!