はじめに
VBAのデバッグ作業中、特定の位置でプログラムの実行を一時停止させたい場合、通常はブレークポイント(F9
キーで設定/解除)を使います。しかし、ブレークポイントはファイルに保存されないため、一度ファイルを閉じてしまうと、再度設定し直す必要があります。
もし、ファイルを閉じても消えない、コード自体に埋め込まれたブレークポイントのようなものが欲しければ、Stop
ステートメントが非常に便利です。
この記事では、Stop
ステートメントを使って、マクロの実行を任意の場所で確実に一時中断させる方法と、ブレークポイントとの使い分けについて解説します。
Stop
ステートメントを使ったサンプルコード
このマクロは、2つの数値を足し合わせる計算の途中で Stop
ステートメントを挟み、その時点での変数の値を確認できるようにします。
完成コード
' Stopステートメントでマクロを一時停止させる
Sub PauseWithStopStatement()
Dim valueA As Long
Dim valueB As Long
valueA = 10
valueB = 20
'--- 1回目の計算 ---
valueA = valueA + valueB
'--- Stopステートメントで、ここで実行を一時中断 ---
Stop
'--- 2回目の計算 ---
' マクロを再開(F5)すると、ここから実行される
valueB = valueB + valueA
Debug.Print "最終結果: valueA=" & valueA & ", valueB=" & valueB
End Sub
実行方法と動作
- VBE(VBAエディタ)を開いた状態で、上記マクロを実行します。
- プログラムは
Stop
と書かれた行まで実行され、その行が黄色くハイライトされた状態で一時停止(中断モード)します。 - この状態で、各変数(
valueA
やvalueB
)にカーソルを合わせると、その時点での値(valueA
は30
)を確認できます。 - ツールバーの「継続」ボタン、または
F5
キーを押すと、マクロは中断した次の行から実行を再開します。
コードの解説とブレークポイントとの違い
Stop
ステートメント
Stop
は、プログラムの実行を中断モードに切り替えるだけの、非常にシンプルなステートメントです。
ブレークポイント (F9
) との違い
項目 | Stop ステートメント | ブレークポイント (F9 ) |
保存 | コードの一部としてファイルに保存される | ファイルには保存されず、VBE環境にのみ保存される |
共有 | ファイルを他人に渡すと、相手の環境でも必ず止まる | 相手の環境では止まらない |
設定/解除 | コードを直接編集する必要がある | F9 キーで簡単に行える |
基本的には、一時的なデバッグには手軽なブレークポイントを使い、コードの特定の箇所で必ず一時停止させたい意図を、コード自体に残しておきたい場合に Stop
を使う、という使い分けが良いでしょう。
注意: Stop
ステートメントは、マクロの最終版を配布する際には、不要であれば削除するのを忘れないようにしましょう。利用者の環境で意図せずマクロが停止してしまう原因になります。
まとめ
今回は、Stop
ステートメントを使って、VBAマクロの実行を意図的に一時中断させる方法を解説しました。
- コード内に
Stop
と記述するだけで、その位置で実行が中断される。 - ブレークポイントとは異なり、ファイルに保存されるため、他の環境でも動作する。
- デバッグが完了したら、不要な
Stop
は削除するのが一般的。
Stop
ステートメントは、開発中の重要なチェックポイントに目印として埋め込んでおくのに非常に便利です。ブレークポイントと賢く使い分けて、デバッグ作業の効率を向上させましょう。