Excel VBA マクロ無限ループの強制終了する方法|エラー防止テクニック

 

Excel VBA マクロが誤って無限ループに入ったり、期待通りに動作しないときのマクロ動作を強制終了する操作方法や、エラー防止テクニックコードについて、具体的に解説します。

 

2025年解消したい。「ExcelVBAって難しそう…」と思っていませんか?
👉クリックして、初心者でもすぐ使えるExcelVBA VBAマクロ習得 ▶ 詳細はこちら

 

Excel VBA マクロの無限ループ状態

以下のようなシーンで利用されます。

・マクロが無限ループに入ったとき

・マクロの実行が遅すぎると感じたとき

・実行中のマクロを中断して修正したいとき

 

無限ループとは

無限ループとは、終了条件が満たされないために永遠に繰り返されるループのことです。

通常のループは特定の条件が満たされると終了しますが、無限ループではその条件が永遠に満たされないため、プログラムが止まらなくなります。

※無限ループはプログラムが停止しないため、コンピュータに負担をかけます。無限ループに陥った場合は、通常、プログラムを強制終了する必要があります。ループを使うときは、必ず終了条件の設定が必要です。

ExcelVBAマスターへの第一歩!初心者向けエクセルマクロの作り方

 

3つの止め方

1. [Esc]キーを押す

2. VBAエディタから停止する

3. タスクマネージャーを使用する

 

ポイント

・実行中のマクロを停止すると、処理中のデータが保存されないことがあるため、定期的なバックアップを取っておく。

・マクロを停止した後、データやシートの状態を確認して、不整合がないかをチェックする。

 

 

Excel VBA マクロを強制終了する操作内容

Option Explicit

Sub SampleMacro()
    Dim i As Long
    For i = 1 To 1000000
        Debug.Print i
    Next i
End Sub

上記コードでテストしてください。(処理が非常に重い場合、反応しないことがあります)

1. [Esc]キーを押す

・マクロが実行中の場合、[Esc]キーを押して実行を停止します。

・通常、マクロはこれで停止しますが、場合によっては反応しないことがあります。

2. VBAエディタから停止する

1.VBAエディタを開く
[開発]タブの[Visual Basic]ボタンをクリックします。

2.マクロの停止
・VBAエディタのメニューから[実行] > [リセット]を選択するか、[Ctrl] + [Break]キーを押します。

3. タスクマネージャーを使用する

1.タスクマネージャーを開く
・Windowsの場合、[Ctrl] + [Shift] + [Esc]キーを押してタスクマネージャーを開きます。

2.Excelのタスクを終了する
・タスクマネージャーの[アプリケーション]タブでExcelを選択し、[タスクの終了]をクリックします。

この方法は最終手段です。※保存されていないデータが失われる可能性があるため注意が必要です。

Excel VBA 無限ループやエラーを防ぐためのテクニック

エラーが発生しても次の行に進むように設定

Option Explicit

Sub ErrorHandlingExample()
    On Error Resume Next ' エラーが発生しても次の行に進む

    Dim result As Double
    result = 10 / 0 ' ゼロ除算エラーが発生

    If Err.Number <> 0 Then
        MsgBox "エラーが発生しました: " & Err.Description
        Err.Clear ' エラー情報をクリア
    End If
End Sub

On Error Resume Next は便利ですが、無条件でエラーを無視すると意図しない結果を招く可能性があります。エラーが発生したかを必ずチェックし、必要に応じて処理を追加しましょう。

特定のエラーが発生した際に、指定のエラー処理を行う方法

Option Explicit

Sub ErrorGotoExample()
    On Error GoTo ErrorHandler ' エラー発生時にエラーハンドラーにジャンプ

    Dim result As Double
    result = 10 / 0 ' ゼロ除算エラーが発生

    Exit Sub ' 正常終了時にエラーハンドラーをスキップ

ErrorHandler:
    MsgBox "エラーが発生しました: " & Err.Description
    Err.Clear
End Sub

ループに終了条件を設けることで、無限ループを防ぐ

Option Explicit

Sub LoopExample()
    Dim i As Long
    i = 0

    Do While i < 100000
        Debug.Print i
        i = i + 1
        If i > 5000 Then Exit Do ' 終了条件を設定
    Loop
End Sub

 

記憶定着問題集

操作方法:1.●●●をクリック(スマホはタップ)で答え表示。2.答えをクリック(スマホはタップ)で●●●表示。1⇔2を繰り返すことで、記憶を定着できます。

Excel VBA マクロを強制終了する操作内容は①から③

●●●キーを押す

●●●から停止する。[開発]タブの[Visual Basic]ボタンをクリックしてVBAエディタを開く。VBAエディタのメニューから●●●を選択するか、●●●キーを押します。

③タスクマネージャーを使用する。Windowsの場合、●●●キーを押してタスクマネージャーを開きます。タスクマネージャーの[アプリケーション]タブでExcelを選択し、[タスクの終了]をクリックします。この方法は最終手段です。※保存されていないデータが失われる可能性があるため注意が必要です。

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。