状況を判断しながら処理を繰り返す - Do...Loop ステートメントの使い方

「1から10までの値を足した合計はいくつになるでしょうか。」のように、繰り返し回数が分かっている場合は、 Forループを使用できます。

「1から数を足していって、合計が100を越すのはいくつまで足したときでしょうか。」のように、繰り返し回数が あらかじめわからないときは、Doループを使用します。(繰り返し回数が分かっている場合に使うこともできます。)

~の間(条件式が成り立つ限り)繰り返し処理を行う    ~まで(条件式が成り立つまで)繰り返し処理を行う

~の間(条件式が成り立つ限り)繰り返し処理を行う

Do While 条件式

 繰り返し行う処理

Loop

条件式
合計が100を越えない
繰り返し行う処理
数を1増やす
その前までの合計に数を足す
Do  While  合計 <= 100
  数を1増やす
  合計 =  その前までの合計 + 数
Loop

VBAプログラム

Sub Calc_Total_While01()
  Dim Count
  Dim Total
  
  Count = 0
  Total = 0

  Do  While  Total <=  100
    Count = Count + 1
    Total = Total + Count
  Loop

  MsgBox Count
  
End Sub

プログラムを入力し、F5キーを押して実行してみてください。

答えは14となります。14まで足したときの合計は105となります。


~まで(条件式が成り立つまで)繰り返し処理を行う

上と同じ例を、Do Untilを使って書くと次のようになります。

Do Until 条件式

 繰り返し行う処理

Loop

条件式
合計が100を越える
繰り返し行う処理
数を1増やす
その前までの合計に数を足す
Do  Until  合計 > 100
  数を1増やす
  合計 =  その前までの合計 + 数
Loop

VBAプログラム

Sub Calc_Total_Until01()
  Dim Count
  Dim Total

  Count = 0
  Total = 0
  Do  While  Total > 100
    Count = Count + 1
    Total = Total + Count
  Loop
  
  MsgBox Count
  
End Sub

実行結果は同じになります。

後判定構造

繰り返して処理を行うかどうかの判断を、ループの開始時ではなく処理を実行した後に行う形の繰り返し構造を使うこともできます。

Do

 繰り返し行う処理

Loop While(または Until)  条件式

後判定では、必ず一度は繰り返し処理が行われます。

ここでは詳しい説明を省略します。

メニューページへ