Do...Loop ステートメント

指定された条件が真 (True) である間、または条件が真 (True) になるまで、一連のステートメントを繰り返し実行するフロー制御ステートメントです。

Do [{While | Until} condition]
   [statements]
   [Exit Do]
   [statements]
Loop 

または、次の構文を使用できます。

Do
   [statements]
   [Exit Do]
   [statements]
Loop [{While | Until} condition]

引数

  • condition
    真 (True) または偽 (False) を評価する数式または文字列式を指定します。condition の値が Null 値の場合、condition は偽 (False) が使われます。
  • statements
    condition が真 (True) である間、または真 (True) になるまで繰り返し実行される任意の行数のステートメントを記述します。

解説

Exit Do ステートメントは、制御構造 Do...Loop 内でだけ使用され、condition で指定した以外の条件で Do...Loop ステートメントを終了させることができます。Exit Do ステートメントは、Do...Loop ステートメント内の任意の場所で何回でも使用できます。Exit Do ステートメントは条件の評価 (たとえば If...Then ステートメントなど) と共に使用されることが多く、Loop ステートメントの直後のステートメントに制御を渡します。

Do...Loop ステートメントは、ネスト (入れ子) 構造にすることができます。つまり、Do...Loop ステートメントの内部に別の Do...Loop ステートメントを含めることができます。ネスト (入れ子) 構造にしている場合に Exit Do ステートメントが実行されると、その Exit Do ステートメントを囲んでいる 1 番内側のループから抜け出します。

次のコードは、Do...Loop ステートメントの使用例です。

Do Until DefResp = vbNo
   MyNum = Int (6 * Rnd + 1)   ' 1 ~ 6 の整数をランダムに生成します。
   DefResp = MsgBox (MyNum & " 他の番号を生成しますか ?", vbYesNo)
Loop

Dim Check, Counter
Check = True:Counter = 0   ' 変数を初期化します。
Do                            ' 外側のループ。
   Do While Counter < 20      ' 内側のループ
      Counter = Counter + 1   ' カウンタの数を増やします。
      If Counter = 10 Then    ' 条件が真 (True) の場合...
         Check = False        ' フラグの値を偽 (False) に設定します。
         Exit Do              ' 内側のループから抜け出します。
      End If
   Loop
Loop Until Check = False      ' 直ちに外側のループから抜け出します。

必要条件

バージョン 1

参照

Exit ステートメント | For...Next ステートメント | While...Wend ステートメント