VBAのUntilでDoループを条件付きで繰り返す方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

Untilの概要

特定の条件が満たされるまでループを繰り返す VBAの予約語

Until

概要 Until は、VBA の Do ... Loop 構文と組み合わせて使用され、指定した条件が「真(True)」になるまで繰り返し処理を実行するために使用されます。

わかりやすく説明 Until は、「この条件が満たされるまで繰り返すよ!」という命令です。例えば、「セル A1 の値が 100 になるまで繰り返す」といった処理に使用されます。

  • Do … Loop 構文で使用し、指定した条件が満たされるまで処理を繰り返す。
  • 条件をループの最初または最後に設定できる。
  • While とは逆の動作(Until は条件が「True」になるまで、While は条件が「False」になるまで)をする。

Until を使った基本的なループ処理

Until を使って、指定した条件が満たされるまで繰り返す基本的な例です。

Sub ExampleUntil()
    Dim counter As Integer
    counter = 1

    ' counter が 5 になるまでループ
    Do Until counter = 5
        Debug.Print "カウント: " & counter
        counter = counter + 1
    Loop
End Sub

解説:

  • Do Until counter = 5 で、counter が 5 になるまでループを繰り返す。
  • カウントが 1 → 2 → 3 → 4 と増加し、5 になるとループを終了。

Until を使った Excel のセル操作

Until を使って、セル A1 の値が 100 になるまで繰り返す例です。

Sub ExampleUntilExcel()
    Dim cellValue As Integer
    cellValue = Range("A1").Value

    ' A1 の値が 100 になるまで増やす
    Do Until cellValue >= 100
        cellValue = cellValue + 10
        Range("A1").Value = cellValue
    Loop
End Sub

解説:

  • セル A1 の値が 100 以上になるまで、10 ずつ加算。
  • 処理が完了すると A1 の値が 100 以上になる。

ループの最後に Until を使う

Until をループの最後に記述することで、最初の 1 回は必ず実行されるようにする例です。

Sub ExampleLoopUntil()
    Dim num As Integer
    num = 1

    ' 最低 1 回は実行する
    Do
        Debug.Print "数値: " & num
        num = num + 1
    Loop Until num > 5
End Sub

解説:

  • Do ... Loop Until を使うと、条件を満たさなくても最初の 1 回は必ず実行される。
  • この例では、1 → 2 → 3 → 4 → 5 まで処理が実行される。

エラーを回避する方法

Until を使用する際に、無限ループを防ぐ方法を紹介します。

Sub SafeUntilLoop()
    Dim counter As Integer
    counter = 1

    Do Until counter = 5
        Debug.Print "カウント: " & counter
        counter = counter + 1
        
        ' 無限ループ防止用のエラーチェック
        If counter > 1000 Then
            MsgBox "ループが長すぎるため停止しました", vbExclamation, "エラー"
            Exit Do
        End If
    Loop
End Sub

解説:

  • カウンタが異常に大きくなった場合、Exit Do を使ってループを強制終了。
  • 無限ループを防ぐため、適切な条件設定を行うことが重要。

Until の注意事項

  • While とは逆の動作: Until は「条件が満たされるまで」、While は「条件が満たされている間」ループを繰り返す。
  • 無限ループに注意: ループを抜けるための条件を適切に設定しないと、無限に繰り返される。
  • ループの開始位置に応じて動作が異なる: Do Until では条件を満たさない場合ループに入らないが、Do ... Loop Until では最低 1 回は処理が実行される。

よくある質問

Q: Until と While の違いは何ですか?
A: Until は「条件が True になるまで」、While は「条件が True の間」ループを実行します。
Q: Until を使ったループが終わらないのですが?
A: ループを抜ける条件が正しく設定されているか確認してください。Exit Do を使って強制終了する方法もあります。
Q: Until の条件を間違えるとどうなりますか?
A: ループが一度も実行されなかったり、無限ループになる可能性があります。
Q: Until の代わりに While を使うべきですか?
A: 条件が満たされるまで実行したい場合は Until、条件が満たされている間実行したい場合は While を使うとよいです。

まとめ

  • Until は、指定した条件が満たされるまでループを繰り返す。
  • While とは逆の動作をし、「条件が成立するまで」処理を繰り返す。
  • 無限ループを防ぐために、適切な終了条件を設定することが重要。
  • ループの開始位置によって動作が異なり、Do ... Loop Until は最低 1 回処理が実行される。
  • Excel のセル操作やカウンタの増加処理などに活用できる。