第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となります。
ようするにループを続ける条件が前にあるのかないのかによって違いが生じるのです。

第7講5話へ 第2話へ

講義トップへ

数学研究室に戻る