「この条件に合っている間はこの処理を繰り返して、条件に合わなくなったら繰り返しの処理を辞めたい」と思った時に使うのがDo Loopステートメントです!
今回はDo Loopステートメントを使用した繰り返し処理についてご紹介します!!
Do Loopを使用する時は下記の内容に注意してください!
Do Loopステートメントは良くも悪くも条件を満たすまで動作します。
作成途中のマクロでは意図していなくても、記述ミスで処理が永遠に終わらないようになってしまっている事があり、処理が終わらない場合はプログラムを強制終了させる必要があります。
マクロって止めれるの?強制終了?と思った方は、強制終了について別の記事で解説していますので事前に確認しておきましょう。
「条件を満たしている間」処理を繰り返す
Do Whileは条件を満たしている間、同じ処理を繰り返すステートメントです。
Whileの位置を変える事で、条件を満たしているか判定する場所を変える事が出来ます。
このステートメントを使用する前後の処理に応じて変えてみましょう。
WhileはDoかLoopどちらかの後ろに記述する必要があり、両方に記載する事は出来ません。
Do while ~ Loop
Do while ~ Loopの構文は下記のようになっています。
1 2 3 4 5 6 7 |
Sub sample() Do While 条件式 ~ここに繰り返す処理の内容~ Loop End Sub |
上記の構文を使用して作成したサンプルがこちらです。
iが3以下の時は処理を繰り返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub sample() Dim i As Integer i = 1 Do While i <= 3 MsgBox i & "回目のご飯です" i = i + 1 Loop MsgBox "お腹が満たされました!!" End Sub |
Do ~ Loop While
Do ~ Loop Whileの構文は下記のようになっています。
1 2 3 4 5 6 7 |
Sub sample() Do ~ここに繰り返す処理の内容~ Loop While 条件式 End Sub |
上記の構文を使用して作成したサンプルがこちらです。
iが3以下の時は処理を繰り返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub sample() Dim i As Integer i = 1 Do MsgBox i & "回目のご飯です" i = i + 1 Loop While i <= 3 MsgBox "お腹が満たされました!!" End Sub |
「条件を満たすまで」処理を繰り返す
WhileがUntilに変わると、「条件を満たすまで」処理を繰り返す事が出来ます。
Untilの位置はWhileと同様に変える事が出来ますので、こちらも使用する前後の処理に応じて変えてみましょう。
Do Until ~ Loop
Do Until ~ Loopの構文は下記のようになっています。
1 2 3 4 5 6 7 |
Sub sample() Do Until 条件式 ~ここに繰り返す処理の内容~ Loop End Sub |
上記の構文を使用して作成したサンプルがこちらです。
iが3になるまで処理を繰り返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub sample() Dim i As Integer i = 1 Do Until i = 3 MsgBox i & "回目のご飯です" i = i + 1 Loop MsgBox "お腹が満たされました!!" End Sub |
Do ~ Loop Until
Do ~ Loop Untilの構文は下記のようになっています。
1 2 3 4 5 6 7 |
Sub sample() Do ~ここに繰り返す処理の内容~ Loop Until 条件式 End Sub |
上記の構文を使用して作成したサンプルがこちらです。
iが3になるまで処理を繰り返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub sample() Dim i As Integer i = 1 Do MsgBox i & "回目のご飯です" i = i + 1 Loop Until i = 3 MsgBox "お腹が満たされました!!" End Sub |
まとめ
今回ご紹介したDo Loopの他にも、繰り返し処理に使用出来るステートメントはいくつかあります。
For ~ NextやFor ~ eachステートメントでもifで処理を抜けてしまえば同じような事が出来ますので、始めはDo Loop使わなくても大丈夫な気がしてきますよね。
自分だけが使用する時はそれでも問題ないかもしれませんが、他の人も見る可能性がある場合は適切なステートメントを使用する事で理解しやすいコードになります。
共有する予定が無い場合でも思わぬ所で役に立つ事がありますので、適切なステートメントを使用する練習と考えて積極的に使用する事をオススメします。
コメント