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

Do...LoopステートメントはWhile...Wendステートメントと似ていますが、While...Wendステートメントは条件式をループの最初にしか指定できないのに対して、Do...Loopステートメントはループの最初または最後に条件式を指定できます。また、条件式が正しい間繰り返すのか、条件式が正しくなるまで繰り返すのかを指定できます。

( 構文1 ) Do While(またはUntil) [条件式]
  :
Loop
( 構文2 ) Do
  :
Loop While(またはUntil) [条件式]

Whileを使うと条件式が正しい間繰り返され、Untilを使うと条件式が正しくなるまで繰り返されます。構文1と構文2のどちらで記述しても結果は同じです。

実行されてから10秒経過するとメッセージを出します。実行中はステータスバーに経過秒数を示します。下の2つとも結果は同じになります。

Sub Sample1()
  Dim i
  i = Timer
  Do While Timer - i < 10
    Application.StatusBar = Timer - i
  Loop
  Application.StatusBar = False
  MsgBox "10秒経過しました"
End Sub
Sub Sample2()
  Dim i
  i = Timer
  Do Until Timer - i >= 10
    Application.StatusBar = Timer - i
  Loop
  Application.StatusBar = False
  MsgBox "10秒経過しました"
End Sub

「Timer」は午前0時から経過した秒数を返す関数です。