【VBAで感動する瞬間⑭】 ループは便利だけど、書き方を間違えると無限ループに…!

記事
学び
こんにちは。  
ごんた@VBAレッスン です。

今日は、VBAで誰もが一度は経験する  
「止まらないループ」=無限ループ
についてお話しします。

For / For Each / Do While はとても便利ですが、  
条件や書き方を少し間違えるだけで、

Excel が固まって再起動が必要になる“無限ループ”

が起きることがあります。

でも安心してください。  
ループの仕組みと安全な使い方を知っておけば、怖がる必要はありません。

■ 1. ループが便利な理由

ループは、Excel の繰り返し作業を一瞬で自動化できる強力な仕組みです。

- 同じ作業を何十回・何百回でも正確に繰り返せる  
- 条件に応じて必要な処理だけ実行できる  
- データ量が増えてもコードはそのままでOK  
- 行・セル・シート・ファイルなど、あらゆる対象に使える  

「繰り返し作業=ループで自動化」が基本です。

■ 2. でも、書き方を間違えると無限ループに…

● For の落とし穴:カウンタをいじると止まらない

```vb
For i = 1 To 10
    i = i - 1 ' ← 永遠に終わらない
Next i
```

ループ変数を自分で書き換えると、終わらなくなることがあります。

安全策:ループ変数は触らない。必要なら別の変数を使う。

---

● For Each の落とし穴:対象を削除すると壊れる

```vb
For Each c In Range("A1:A10")
    If c.Value = "" Then
        c.Delete ' ← コレクションが変わって無限ループ化
    End If
Next
```

ループ中に削除・追加すると、対象が変わってループが壊れます。

安全策:削除したいときは後ろから For で回す。

---

● Do While の落とし穴:条件が変わらないと永遠に続く

```vb
Do While Cells(i, 1).Value <> ""
    ' i を増やし忘れると永遠に続く
Loop
```

安全策:ループ内で必ず条件が変わるようにする。

---

■ 3. 無限ループを防ぐ最強の方法

● ブロックポイント(ブレークポイント)を置く

ループの中に赤い丸(ブレークポイント)を置いておくと、  
”必ずそこで止まる“安全装置”になります。

● ステップ実行で「1回だけ回す」

いきなり全部回さず、  
1回だけ回して変数や条件が正しく変化しているか確認する。

これが“最小単位デバッグ”です。

確認ポイントはこの3つ:

- カウンタが増えているか  
- 条件が変わっているか  
- 想定外のセルを参照していないか  

1回だけ回すだけで、無限ループの9割は防げます。

🌱 まとめ(ごんた式)

- ループは繰り返し作業を一瞬で自動化できる便利な仕組み  
- でも書き方を間違えると無限ループで Excel が固まることがある  
- ブロックポイント+ステップ実行で「1回だけ回す」  
→ これだけで安全に使えるようになる  

ループは怖くありません。  
正しい使い方と“止める仕組み”を知っていれば、強力な味方になります。

🌱 VBAを学び始めた方へ。  
あなたの“困った”に合わせて、複数のアプローチを丁寧にお伝えするレッスンはこちら!

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら