【VBA】ステップ・イン/オーバー/アウトとは?簡単にまとめてみた

2022年2月15日

VBA_ステップイン_オーバー_アウト_1

作成したVBAコードを実行しても思ったような結果が得られない時があります。その際に活用されるのが「デバック」メニューにある「ステップ・イン」や「ステップ・オーバー」等です。デバックの「ステップ・○○」の機能を使用するには、VBEを開いて、まずは一度[F8]キーを押してください。選択しているプロシージャの先頭が黄色くマーカーされるのが開始の合図です。
 

VBA_ステップイン_オーバー_アウト_2
こんな感じに黄色くマーカーされます。

今回はメニュー内にある「ステップ・イン/オーバー/アウト」(カーソル行の前まで実行)を、例題をもとに簡単に説明していきます。
 

広告

ステップ・イン ~[F8]キーのみ~

VBA_ステップイン_オーバー_アウト_3
[F8]キーを押すたびに、1行ずつ進みます
VBA_ステップイン_オーバー_アウト_4
[F8]キーを押すたびに、実際のExcelにも処理が施されていきます。

VBEを開いて[F8]キーを押した後、

[F8]キー を押すと1行ずつコードを実行する

機能です。このステップ実行中には、
VBE上の変数に当たる部分にカーソルを合わせると、
 例えば、そのとき変数に入っている値は何か?
が分かるようになってポップアップ表示されます。

VBA_ステップイン_オーバー_アウト_6

これは結構便利です。

ステップ・インを終了させるには
ツールバーにある「■リセット」ボタンを押します。
 

ステップ・オーバー ~[Shift] 押しながら[F8]~

VBA_ステップイン_オーバー_アウト_13
同じく1行ずつ進む「ステップ・イン」では画像のように、④~⑨をそれぞれ実行する為、[F8]キーを合計で12回押します。
VBA_ステップイン_オーバー_アウト_12
一方で、「ステップ・オーバー」の場合は、関数に当たる④の部分は省略(結果が一瞬で反映)され、つまり、この画像で言うと[F8]キーを押す回数は合計で7回です。

VBEを開いて[F8]キーを押した後、

[Shift]押しながら[F8]を押すと
1行ずつコードを実行するが関数内は処理を飛ばして実行する

機能になります。1行ずつ進むのにステップ・インと変わらない
ように思えますが、その違いは具体的には上の画面を参照してみてください。

 

ステップ・アウト ~[Ctrl] 押しながら[F8]~

VBA_ステップイン_オーバー_アウト_9
【1-①】例えば、途中まで「ステップ・イン」で進んでいた(あるいはステップ・インを開始したばかり)とします。
VBA_ステップイン_オーバー_アウト_10
【1ー②】そこから「ステップ・アウト」を実行すると、一気に[End Sub]までいき、選択中のプロシージャをすべて実行し、終わります。
VBA_ステップイン_オーバー_アウト_11
【2】或いは、この画像のように “ブレークポイント” を設けていると、その手前までの処理が一気に終了します。
※ブレークポイントの設置方法は任意の行で[F9]キーを押すか、任意の行の左端(黄色い矢印があるところ)をクリックする事で設置/解除ができます

VBEを開いて[F8]キーを押した後、

[Ctrl]押しながら[F8] で
選択中のプロシージャを最後まで実行する
 or
②(設けてあれば)ブレークポイントまで実行する

機能になります。具体的には上の画面のように
処理が実行されます。
 

カーソル行の前まで実行~[Ctrl]+[Shift] 押しながら[F8]~

文字通り、現在カーソルがある位置の前まで実行されます。
これに関しては説明を省きますが、
「ブレークポイント」ではなく「カーソルの位置」である事にご注意ください。

以上です、何かの参考になれば嬉しいです。

広告