この記事で解決できる3つの疑問

無限ループになるのはなぜ?
次から無限ループを防ぐにはどうすればいいの?
結論:原因のほとんどは「条件が変化しない」ことです
VBAの For
や Do While
などの繰り返し処理で、ループが終わらない=無限ループになってしまうことは初心者にありがちなトラブルです。
多くの場合、「ループが終了する条件がずっと満たされない」または「カウンタが変化していない」ことが原因です。
目次
無限ループになったときの緊急停止方法
まず知っておきたいのは、「Escキー」で止められるということです。
✅ VBAの無限ループを止める方法
- キーボードの [Esc] キーを押す
→ 処理中のマクロが中断されます。 - [Ctrl] + [Pause/Break] でも中断可能(ノートPCでは Fnキーとの組み合わせ)
- それでも止まらない場合は、タスクマネージャーでExcelを強制終了
なぜ無限ループになるのか?よくある原因
❌カウンターが変化していない
Dim i As Integer i = 1 Do While i <= 5 MsgBox i ' i = i + 1 がないため、iはずっと1のまま Loop
❌ 条件がいつまでも真(True)のまま
Dim flg As Boolean flg = True Do While flg MsgBox "止まらない…" Loop
flg
が途中で False
に変わらなければ、ループは永遠に続きます。
無限ループを防ぐための書き方の工夫
✅ 変化を明示する
ループの中でループ条件に関わる変数を必ず更新しましょう。
Dim i As Integer i = 1 Do While i <= 5 MsgBox i i = i + 1 ' ← ここが重要 Loop
✅ 条件を慎重に書く
「<=」「<」「<>」などの条件式をよく見直すクセをつけましょう。
それでも不安なら「フェイルセーフ」を仕込もう
無限ループを完全に防ぐのは難しいときもあります。
そんな時は回数制限を設けておくのが効果的です。
Dim i As Integer i = 1 Dim count As Integer count = 0 Do While i <= 5 MsgBox i i = i + 1 count = count + 1 If count > 1000 Then ' 1000回以上回ったら強制停止 MsgBox "安全のため処理を中断しました" Exit Do End If Loop
まとめ:ループには「変化」と「出口」が必要!
無限ループは変数の更新忘れや条件ミスで起こる
[Esc]キーで中断できることを覚えておく
どうしても不安なら「フェイルセーフ」の仕組みを
コメント