第8講 その他のDo...Loop ステートメント
第1話 Do〜Loop While文
前講で学んだDo While〜Loop文以外にDo〜Loop文は3種類あります。
最初にDo〜Loop While文を学びましょう。
基本構造は、次のようになります。
Do
・
・
・
Loop While 条件式
前講で学んだDo While〜Loop文は、
ループの冒頭にループを繰り返す条件が書いてありましたが、
Do〜Loop While文においてはその条件は最後に来ます。
次の2つのプログラムを考えてみましょう。
Private Sub CommandButton1_Click()
Dim i As Integer, wa As Integer
wa = 0
i = 1
Do While i <= 10
wa = wa + i
i = i + 1
Loop
Cells(6, 1) = wa
End Sub
Private Sub CommandButton1_Click()
Dim i As Integer, wa As Integer
wa = 0
i = 1
Do
wa = wa + i
i = i + 1
Loop While i <= 10
Cells(6, 1) = wa
End Sub
2つとも実行結果はA6に1から10までの和55が表示されます。
では、Do While〜Loop文とDo〜Loop While文には違いがないのでしょうか。
今度は次の2つのプログラムを考えてみましょう。
Private Sub CommandButton1_Click()
Dim i As Integer, wa As Integer
wa = 0
i = 1
Do While i >= 4 And i <= 10
wa = wa + i
i = i + 3
Loop
Cells(6, 1) = wa
End Sub
Private Sub CommandButton1_Click()
Dim i, wa As Integer
wa = 0
i = 1
Do
wa = wa + i
i = i + 3
Loop While i >= 4 And i <= 10
Cells(6, 1) = wa
End Sub
それぞれCells(6, 1)すなわちA6にはなんと入力されているでしょうか。
前者は0で後者は22です。
前者においてはi = 1は条件 i >= 4 And i <= 10
を満たしませんのでループは実行されませんが、
後者においてはループにはいるときには、
無条件ですので
wa = wa + i
i = i + 3
が実行されます。
この後ループ処理を続けるかどうかはじめて問題にしますが、
1回目の処理によってi=4となっていますから、条件i >= 4 And i <= 10
をクリアして計算を続けます。i=10まで条件をクリアしますから
結局1+4+7+10を計算することになります。
だから、前者の答えが0であるの対して後者は22となります。
ようするにループを続ける条件が前にあるのかないのかによって違いが生じるのです。