必ず1度は実行する

広告

次に同じような構文ですが「Do ... Loop While」構文について見ていきます。

構文は下記のようになります。

Do
    (条件式がTrueの時に行う処理1)
    (条件式がTrueの時に行う処理2)
Loop While 条件式

「Do While ... Loop」との違いは条件式の評価がループを一度行った後に行われるということです。つまり「Do」の行と「Loop」の行の間に書かれた処理は少なくとも必ず1回は実行されます。最初に1回実行された後は条件式を評価されて「True」だった場合には先頭に戻ってまだ処理が実行されます。

この構文は次のように書き換えることが出来ます。

(条件式がFalseの時に行う処理1)
(条件式がFalseの時に行う処理2)

Do While 条件式
    (条件式がFalseの時に行う処理1)
    (条件式がFalseの時に行う処理2)
Loop

必ず1回は実行させたい場合には便利な構文です。

サンプルプログラム

では簡単なサンプルで試してみましょう。

testloop3.bas

Sub テスト()
    Dim x As Integer

    x = 1

    Do
        x = x * 3
    Loop while x < 100

    Range("A1").Value = x

End Sub

上記のマクロを実行すると次のようになります。

繰り返し処理

あまり良い例でもないのですけど、3を累乗していって100を最初に超えた数値を求めています。

Do ... Loop While 構文

また「Do ... Loop While」構文にも条件式が「False」の場合のみ繰り返しを実行する「Do ... Loop Until」構文が用意されています。

構文は下記のようになります。

Do
    (条件式がFalseの時に行う処理1)
    (条件式がFalseの時に行う処理2)
Loop Until 条件式

「Do ... Loop While」構文との違いは繰り返しを継続する条件が、条件式が「False」の場合になるという点だけです。

( Written by Tatsuo Ikura )