VBAで無限ループを防ぐ方法

ループ処理を使う際に気をつけたいのが「無限ループ」です。条件が永遠に満たされ続ける、または更新されないことでループが止まらず、処理が終わらなくなってしまいます。

本記事では、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つの心得

チェック項目内容
カウンターの更新条件に関係する変数はループ内で変更する
条件の設計条件が達成可能か、無限にならないか確認
上限の設定(予防策)念のため、回数制限を入れて保険をかけておく

ループ処理は便利ですが、ちょっとしたミスで無限ループに陥るリスクもあります。
基本を押さえ、安全で効率的なコードを書くよう心がけましょう。

コメント

タイトルとURLをコピーしました