Excel VBA 初心者の為の入門講座のホームページです

Excel VBA 入門講座


4.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
Copyright (C) pc-users.net, All Rights Reserved.