A子さん「For文以外にも繰り返しの書き方があるって聞いたけど、Do While とか Do Until って何が違うの?」
結論:条件が「満たされるまで続ける」のがDo While、「満たされたら抜ける」のがDo Untilです!
「何かの条件を満たすまで繰り返したい」ときに使えるのが、Do While / Do Until 構文です。
終了条件が決まっていない場合や、ユーザーの入力待ちなどに便利です。
目次
Do While / Do Untilとは?
Excel VBAで繰り返し処理を行う手段のひとつ。
条件を見てから繰り返す or 繰り返してから条件を判断するという違いがあり、柔軟なループが可能です。
基本構文と使い方
◆Do While の基本構文
Do While 条件
' 条件がTrueの間、繰り返される
Loop
◆Do Until の基本構文
Do Until 条件
' 条件がFalseの間、繰り返される
Loop
【ポイント】
Whileは 「条件が成立している間」 繰り返すUntilは 「条件が成立するまで」 繰り返す
WhileとUntilの違い(早見表)
| 比較項目 | Do While | Do Until |
|---|---|---|
| 繰り返し条件 | 条件がTrueの間続く | 条件がFalseの間続く |
| 感覚 | 「〜の間は」処理を続ける | 「〜になるまで」処理を続ける |
| 終了の書き方 | Do While i < 10 | Do Until i = 10 |
実践例:空白セルに当たるまでループする
Dim i As Integer
i = 1
Do While Cells(i, 1).Value <> ""
Cells(i, 2).Value = "データあり"
i = i + 1
Loop
このコードは、A列の空白セルに当たるまで処理を繰り返し、B列にメッセージを表示します。
無限ループに注意!条件の正しい書き方
以下のように、カウンターの増加を忘れると無限ループになります。
Do While Cells(i, 1).Value <> ""
' i = i + 1 を忘れるとずっと同じセルを見続ける!
Loop
✅対策:ループ中のカウンター更新を忘れずに
Exit Doとの合わせ技
Exit Doとの合わせ技
特定の条件で途中終了させたい場合は、Exit Do を使います。
Do While i < 100
If Cells(i, 1).Value = "終了" Then
Exit Do
End If
i = i + 1
Loop
まとめ:条件ループならDo While / Do Untilを活用!
終了条件が明確でない繰り返しに向いている
While と Until は条件の「True/False」で繰り返し方が異なる
Exit Do で柔軟なループ制御も可能

コメント