
Excel VBA マクロが誤って無限ループに入ったり、期待通りに動作しないときのマクロ動作を強制終了する操作方法や、エラー防止テクニックコードについて、具体的に解説します。
Excel VBA マクロの無限ループ状態
以下のようなシーンで利用されます。
・マクロが無限ループに入ったとき
・マクロの実行が遅すぎると感じたとき
・実行中のマクロを中断して修正したいとき
無限ループとは、終了条件が満たされないために永遠に繰り返されるループのことです。
通常のループは特定の条件が満たされると終了しますが、無限ループではその条件が永遠に満たされないため、プログラムが止まらなくなります。
※無限ループはプログラムが停止しないため、コンピュータに負担をかけます。無限ループに陥った場合は、通常、プログラムを強制終了する必要があります。ループを使うときは、必ず終了条件の設定が必要です。
ExcelVBAマスターへの第一歩!初心者向けエクセルマクロの作り方
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
上記コードでテストしてください。(処理が非常に重い場合、反応しないことがあります)
・マクロが実行中の場合、[Esc]キーを押して実行を停止します。
・通常、マクロはこれで停止しますが、場合によっては反応しないことがあります。
1.VBAエディタを開く
[開発]タブの[Visual Basic]ボタンをクリックします。
2.マクロの停止
・VBAエディタのメニューから[実行] > [リセット]を選択するか、[Ctrl] + [Break]キーを押します。
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
「日頃から本サイトを閲覧いただいているお客様だけに、
【無料】EXCEL VBA コードショートカット集をご紹介させていただきます。
きっと気に入っていただけると思います」
