
ExcelVBA 無限ループに陥ったり、エラーで停止しない場合 に、処理を強制的に終了させるために使用します。 使い方や注意点など、サンプルコードをもとに具体的に解説します。
📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!
👇実務で“そのまま使える”テンプレ付きで、コピペするだけ!
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き
目次
Excel VBA 強制的に終了|シーン
以下のシーンで利用します。
1.無限ループを止めたい。
2.処理の途中で特定の条件に達したら強制終了したい。
3.ユーザーがボタンを押したらマクロを中断したい。
Excel VBA 強制的に終了|サンプルコード
End ステートメントを使う(すべての処理を強制終了)
標準モジュール
Option Explicit
Sub 強制終了_End()
' 何らかの処理
MsgBox "処理を強制終了します", vbExclamation
' マクロを強制終了
End
End Sub
・VBAの実行を即座に停止し、すべての変数をリセットする
・リソース解放が行われないため、頻繁な使用は非推奨
・End を使用すると、すべての変数が初期化されるため、開いたブックやファイルが閉じられないことがあります。
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
Exit Sub や Exit Function を使う(特定の処理のみ中断)
標準モジュール
Option Explicit
Sub 強制終了_ExitSub()
Dim i As Integer
' 繰り返し処理
For i = 1 To 10
If i = 5 Then
MsgBox "処理を中断します", vbExclamation
Exit Sub ' ここで処理を中断
End If
Debug.Print "i=" & i
Next i
End Sub
・指定したプロシージャ(SubやFunction)のみ終了できる。
・他のマクロへの影響を避けるため、推奨される方法
DoEvents を活用して中断(ユーザー操作を許可)
標準モジュール
Option Explicit
Sub 強制終了_DoEvents()
Dim i As Long
For i = 1 To 1000000
' 画面を更新しながら処理する
DoEvents
If i Mod 10000 = 0 Then Debug.Print i
Next i
End Sub
・無限ループを防ぐためにユーザーの操作を受け付ける。
・ループの途中で ESC キーや Ctrl + Break で停止可能
・長時間のループ処理では、DoEvents を適宜入れることで中断しやすくなる
Excel VBA強制的に終了|まとめ
方法 | 特徴 | 用途 | 注意点 |
End | 全マクロを強制終了 | 無限ループやエラー発生時 | 変数がリセットされるので慎重に使用 |
Exit Sub / Exit Function | 指定の処理だけ終了 | 条件付き終了 | 他の処理に影響を与えない |
DoEvents | 途中で中断しやすくする | 長時間のループ処理 | 使いすぎると処理速度が低下 |
「Excel VBAで自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。