目次
動作の違い
VBE(Visual Basic Editor)のデバッグのメニューの中に、ステップイン、ステップオーバー、ステップアウトのコマンドがありますが、その動作の違いをテストしてみました。
VBE を起動した元のアプリケーションは Excel です。
題材のマクロ
下記のマクロでテストしてみます。「最初に実行するマクロ」から「呼び出されるマクロ」を実行しています。
Sub 最初に実行するマクロ() '1 行目 Debug.Print "最初に実行するマクロ" '2 行目 Call 呼び出されるマクロ '3 行目 End Sub '4 行目 Sub 呼び出されるマクロ() '5 行目 Debug.Print "呼び出されるマクロ" '6 行目 End Sub '7 行目
ステップインの場合
ステップインは「F8」キーを押す度に、一行分のマクロを実行して、そこでマクロが一時停止するようです。
ステップインは呼び出すマクロ(関数)の中に入っていきます。上記マクロの場合、 2,3,5,6,7,4 行目の順番でマクロが一時停止しました。
ユーザーの操作と、その時の VBE のコードウィンドウの状態を表にしてみました。
ユーザーの操作 | その時の VBE のコードウィンドウの状態 |
---|---|
マクロの 1 行目で「F8」キーを押す | |
「F8」キーを押す | |
「F8」キーを押す | |
「F8」キーを押す | |
「F8」キーを押す | |
「F8」キーを押す | |
「F8」キーを押す | |
「F8」キーを押す |
VBE のイミディエイトウィンドウに以下の内容が出力されました。「呼び出されるマクロ」が実行されたようです。
最初に実行するマクロ
呼び出されるマクロ
ステップオーバーの場合
ステップオーバーは「Shift+F8」キーを押す度に、一行ずつ進んでマクロが一時停止しますが、呼び出すマクロ(関数)の中に入っていかないようです。
上記マクロの場合、 2,3,4 行目の順番でマクロが一時停止しました。
ユーザーの操作 | その時の VBE のコードウィンドウの状態 |
---|---|
マクロの 1 行目で「F8」キーを押す | |
「Shift+F8」キーを押す | |
「Shift+F8」キーを押す | |
「Shift+F8」キーを押す | |
「Shift+F8」キーを押す |
VBE のイミディエイトウィンドウに以下の内容が出力されました。呼び出すマクロの中で一時停止しませんでしたが、「呼び出されるマクロ」は実行されたようです。
最初に実行するマクロ
呼び出されるマクロ
ステップアウトの場合
ステップアウトは一時停止無しでマクロ完了まで進むようです。ステップアウトは「Ctrl+Shift+F8」キーを押します。
ユーザーの操作 | その時の VBE のコードウィンドウの状態 |
---|---|
マクロの 1 行目で「F8」キーを押す | |
「Ctrl+Shift+F8」キーを押す |
VBE のイミディエイトウィンドウに以下の内容が出力されました。「呼び出されるマクロ」は実行されたようです。
最初に実行するマクロ
呼び出されるマクロ
呼び出し先のマクロでマクロを呼び出した場合
下記マクロ「A」をステップオーバーで実行してみると、 2,3,4,5,6 行目の順番でマクロが一時停止しました。
Sub A() '1 行目
Debug.Print "START" '2 行目
Debug.Print "A 実行" '3 行目
Call B '4 行目
Debug.Print "END" '5 行目
End Sub '6 行目
Sub B()
Debug.Print "B 実行"
Call C
End Sub
Sub C()
Debug.Print "C 実行"
End Sub
イミディエイトウィンドウには以下の内容が出力されました。
START
A 実行
B 実行
C 実行
END
テスト環境
- Windows 10(64 ビット)
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。