
ExcelVBA 無限ループに陥ったり、エラーで停止しない場合 に、処理を強制的に終了させるために使用します。 使い方や注意点など、サンプルコードをもとに具体的に解説します。
2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事
目次
Excel VBA 強制的に終了|シーン
以下のシーンで利用します。
1.無限ループを止めたい。
2.処理の途中で特定の条件に達したら強制終了したい。
3.ユーザーがボタンを押したらマクロを中断したい。
Excel VBA 強制的に終了|サンプルコード
Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
End ステートメントを使う(すべての処理を強制終了)
標準モジュール
Option Explicit
Sub 強制終了_End()
' 何らかの処理
MsgBox "処理を強制終了します", vbExclamation
' マクロを強制終了
End
End Sub
・VBAの実行を即座に停止し、すべての変数をリセットする
・リソース解放が行われないため、頻繁な使用は非推奨
・End を使用すると、すべての変数が初期化されるため、開いたブックやファイルが閉じられないことがあります。
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で自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。