ExcelVBA プログラム無限ループやエラーで停止しない|強制終了のやり方

 

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エキスパート」をご確認ください。