Excel VBA 入門講座

第6章 3.For~Nextステートメント Excel VBA 入門講座 第6章 5.With~End Withステートメント
Do LoopステートメントDo Loopステートメント

条件により処理を繰り返したい場合はDo~Loopステートメントを使用します。また、Do~Loopステートメントには条件を指定する方法としてWhile と Untilを使用する方法があります。

Whileを使用する場合

While~には"While 条件式"の形式で条件を指定します。条件式がtrueの間、処理が実行されます。従って、通常は処理の中でWhile文の条件式がfalseになるようにしたり、繰り返しを中断するような文を記述します。そうでないとwhile文は処理を永遠にし続けてしまうからです。

"While 条件式"は記述位置には2つの形式があり、記述位置により処理内容が異なってきます。Whileの位置を前にした場合、条件式を満たしているのかを判断してから繰り返す処理を実行します。


Do While 条件式
    条件式を満たすまで繰り返す処理
Loop

下記の例では、まず初期値として変数 i に 1 が代入しておき、次に i が11以下かどうかを評価し、セルに値を代入し、次に i の値を1つ加算し、もう一度 i が11以下かどうかを評価し、セルに値を代入します。この処理を i が10以上になるまで繰り返します。


Sub test()
'セルのA1~A10に1~10を入力する
    i = 1
    Do While i < 11
        Worksheets("Sheet1").Cells(i, 1).Value = i
        i = i + 1
    Loop
End Sub

これに対してWhileの位置を後ろにした場合、繰り返す処理を実行してから条件式を満たしているか判断します。つまりどのような条件でも1回は繰り返す処理を実行します。


Do
    条件式を満たすまで繰り返す処理
Loop While 条件式

下記の例では、まず初期値として変数 i に 10 が代入しておき、セルに値を代入し、次に i の値を1つ加算し、 i が11以下かどうかを評価します。つまりWhile 条件式を評価する前に処理を 1回実行しています。i の値は11なので繰り返す処理を実行せずに終了します。


Sub test()
'セルのA1~A10に1~10を入力する
    i = 10
    Do
        Worksheets("Sheet1").Cells(i, 1).Value = i
        i = i + 1
    Loop While i < 11
End Sub

Untilを使用する場合

Until~には"Until 条件式"の形式で条件を指定します。条件式がtrueの間、処理が実行されます。従って、通常は処理の中でUntil文の条件式がfalseになるようにしたり、繰り返しを中断するような文を記述します。そうでないとUntil文は処理を永遠にし続けてしまうからです。

"Until 条件式"の記述には2つの形式があり、記述位置により処理内容が異なってきます。Untilの位置を前にした場合、条件を満たしているのかを判断してから繰り返す処理を実行します。


Do Until 条件式
    条件式を満たすまで繰り返す処理
Loop

下記の例では、まず初期値として変数 i に 1 が代入しておき、次に i が11以下かどうかを評価し、セルに値を代入し、次に i の値を1つ加算し、もう一度 i が11かどうかを評価し、セルに値を代入します。この処理を i が11になるまで繰り返します。


Sub test()
'セルのA1~A10に1~10を入力する
    i = 1
    Do Until i = 11
        Worksheets("Sheet1").Cells(i, 1).Value = i
        i = i + 1
    Loop
End Sub

これに対してUntilの位置を後ろにした場合、繰り返す処理を実行してから条件式を満たしているか判断します。つまりどのような条件でも1回は繰り返す処理を実行します。


Do
    条件式を満たすまで繰り返す処理
Loop Until 条件式

下記の例では、まず初期値として変数 i に 10 が代入しておき、セルに値を代入し、次に i の値を1つ加算し、 i が11かどうかを評価します。つまりUntil 条件式を評価する前に処理を 1回実行しています。i の値は11なので繰り返す処理を実行せずに終了します。


Sub test()
'セルのA1~A10に1~10を入力する
    i = 10
    Do
        Worksheets("Sheet1").Cells(i, 1).Value = i
        i = i + 1
    Loop Until i = 11
End Sub
第6章 3.For~Nextステートメント Excel VBA 入門講座 第6章 5.With~End Withステートメント TOP