Do Untilによる繰り返し処理について確認します。
Do Untilは条件を満たさない間は繰り返す。
言い換えると条件を満たすまで繰り返す処理です。
Do Untileで条件を満たすまで繰り返す
書式
Do Until 条件式
処理
Loop
Do
処理
Loop Until 条件式
条件式をLoopの後に持ってくることで、最低1回は実行します。
例1:条件を満たすまで繰り返す
1 2 3 4 5 6 7 8 |
Sub Test() Dim i As Long i = 1 Do Until i = 10 Cells(i, 1).Value = i i = i + 1 Loop End Sub |
iが10でない場合はi番目の行,1列目のセルにiの値を入力する処理です。
iが10以上になるまで繰り返します。
実行結果
例2:最低1回は実行する
1 2 3 4 5 6 7 8 |
Sub Test() Dim i As Long i = 1 Do Cells(i, 1).Value = i i = i + 1 Loop Until i <= 10 End Sub |
iが10以下でない場合、i行目、1列目のセルにiの値を入力します。
iが10以下になるまで繰り返します。
実行結果です。
iを宣言した後、すぐに1が代入されているため、ループ内の条件を満たしています。
そのため、本来ならループ内の処理は実行されませんが、今回は条件式がLoopの後に来ているため、最低1回は実行されます。
実行結果で1が入力されているのはそのことが理由です。
条件式をLoopの後に置くことで最低1回は実行する処理になります。
無限ループに注意
条件式によっては無限ループに陥るため、注意が必要です。
1 2 3 4 5 6 7 8 |
Sub Test() Dim i As Long i = 11 Do Until i <= 10 Cells(i, 1).Value = i i = i + 1 Loop End Sub |
実行結果です。
iが10以下でない限り処理を実行します。
しかし、初めにiは11が代入されており、繰り返す度にiは1が加えられていくため、永遠にiが10以下になることはありません。
そのため、無限ループになってしまいます。
まとめ
- Do Untileは条件を満たすまで繰り返す
- Do Whileは条件を満たす限り繰り返す
- 条件式によっては無限ループになるため注意
- 条件式をLoopの後に書けば、最低1回は実行する
Excel VBAの学習にはこちらの書籍を使っています。
2冊目の本はKindle Unlimited対象です。
月額1,000円程で、対象の本がいくらでも読み放題なので、学習するにはもってこいのサービスです。ぜひ活用しましょう。
コメント