ループ処理を使う際に気をつけたいのが「無限ループ」です。条件が永遠に満たされ続ける、または更新されないことでループが止まらず、処理が終わらなくなってしまいます。
本記事では、VBAで無限ループを防ぐためのポイントやテクニックをご紹介します。
目次
1. 無限ループとは?
条件が永遠に変わらない、または常にTrue/Falseのままの場合
Dim i As Integer
i = 1
Do While i <= 5
'iの値が更新されないため、永久に続く
Debug.Print i
Loop
この例では、i
の値が増えないため、条件がずっとTrueのままとなり、無限ループになります。
2. 無限ループを防ぐためのポイント
✅ カウンタを正しく更新する
ループの中で、終了条件に関係する変数を必ず更新しましょう。
Dim i As Integer
i = 1
Do While i <= 5
Debug.Print i
i = i + 1 '← ここが重要!
Loop
✅ 条件を慎重に設計する
<=
や<>
などの比較演算子を正しく使う- 条件が達成される見込みがあるかをチェックする
✅ 万が一に備えて上限を設ける
予期せぬ無限ループを防止するために、「カウンタで強制終了する」手段も有効です。
Dim i As Integer
Dim count As Integer
i = 1
count = 0
Do While i <= 5
Debug.Print i
i = i + 1
count = count + 1
If count > 100 Then Exit Do '万一の脱出条件
Loop
3. 無限ループが発生したら?
もしループが止まらなくなった場合は、[Ctrl] + [Break] キーを押して中断するか、VBEの「リセット」ボタンで止めましょう。
4. まとめ:無限ループを防ぐ3つの心得
チェック項目 | 内容 |
---|---|
カウンターの更新 | 条件に関係する変数はループ内で変更する |
条件の設計 | 条件が達成可能か、無限にならないか確認 |
上限の設定(予防策) | 念のため、回数制限を入れて保険をかけておく |
ループ処理は便利ですが、ちょっとしたミスで無限ループに陥るリスクもあります。
基本を押さえ、安全で効率的なコードを書くよう心がけましょう。
コメント