Excel VBA ブレークポイントやStopで実行を途中で止める方法

ExcelVBA-基礎編

ブレークポイントStopでVBAの実行を意図的に途中で止める方法についてご説明します。

エラーが発生してしまった場合に、エラーの直前で止めたり、ステップ実行では確認したい箇所までループがたくさんあって大変な場合などに、ブレークポイントを設置した箇所まで自動実行させて、停止させたあとにステップ実行すると非常に便利です。

また、停止させたい箇所が膨大なループの中にある場合など、より詳細な条件のもと停止させたい場合の方法についてもご説明します。

ループ直前で停止した場合に、エラー箇所がループの最後の方だった場合にステップ実行では大変な場合などにとても便利です。

1.ブレークポイントの設置方法

ブレークポイントの設置方法は設置(停止)したい行で左側の枠部分でクリックします。

クリックすると「●」が設置され行が赤くなり、この状態の場合は「●」が設置された行で実行が中断されます。

解除するにはもう一度クリックします。

また、設置したい行にフォーカスした状態で「F9」でも設置/解除をする事が可能です。

ブレークポイントはいくつでも設置が可能です。

実行するとブレークポイントが設置された行で停止し、その行が黄色い状態になります。

停止した行は、停止した状態では実行されておらず次の実行もしくはステップで実行されます。

注意事項というほどではないかもしれませんが、1点注意することがあります。

ブレークポイントを設置したまま保存してファイルを閉じると、次回実行時にブレークポイントが設置されいない状態にも関わらず停止する事があります。

その場合停止した理由がわからず解決するまでに時間がかかる場合があるため、ブレークポイントは解除してから保存して閉じる事をおすすめします。

2.ブレークポイントの一括解除

ブレークポイントはいくつも設置が可能です。

そのため、大量に設置した場合に一つ一つ解除が大変です。

しかも、モジュールを跨いで設置した場合に見つけるのも困難な場合があります。

そんなときは「すべてのブレークポイントを解除」を使用します。

デバッグタブの「すべてのブレークポイントを解除」を選択すると、一括で解除可能です。

3.Stopで停止させる方法

ブレークポイントで停止する以外にもコードを意図的に停止させることが可能です。

Stopステートメント」を使用する方法です。

停止させたい行の直下、もしくは直後に「Stop」の1行を追加するだけです。

実行するとStopの行で一時停止して、黄色くなります。

再度実行するには実行ボタンを押すかショートカットの「F5」を押すか、ステップ実行の場合は「F8」を押します。

解除するにはStopをコメントアウトするか、削除します。

4.Stopでより詳細な条件で停止させる

ブレークポイントやStopをただ追加した場合では確認したい目的の直前で停止が難しい場合があります。

たとえば10000回ループする処理のうち9998回目にエラーとなった場合に、ループ直前でブレークポイントやStopで停止させたとしても、9998回ステップ実行は大変ですよね?

Sub sample1()

Dim i As Long

For i = 1 To 10000

    '処理内容(9998回目でエラーとなる場合)

Next i

End Sub

その場合は次のようなコードがある場合に次のように記述します。

Sub sample2()

Dim i As Long

For i = 1 To 10000

    If i = 9997 Then Stop

    '処理内容(9998回目でエラーとなる場合)

Next i

End Sub

If i = 9997 Then Stop」で停止させたい条件を指定して「Stop」で停止させます。

「If」は「End If」を省略して1行で記述する事が可能です。

この記述でループ数が膨大になっても、直前で停止させることが可能です。

また、ループ回数以外にも条件は文字列であったり適宜条件指定する事ができます。

コードを記述する手間はありますが、膨大なループのステップ実行をするよりも圧倒的に早いので、非常に便利です。

タイトルとURLをコピーしました