Do Whileによる繰り返し処理の方法を確認します。
Do Whileの書式
Do Whileを使うときの条件式はこちらです。
Do While 条件
処理
Loop
次の項目でさっそくサンプルを見てみましょう。
Do Whileによる繰り返し
こちらはiが10以下の場合に1列目に「Hello World」と繰り返し入力するマクロです。
つまり、10回文字を入力します。
1 2 3 4 5 6 7 8 9 10 |
Sub Test() Dim i As Long 'iを長整数型として宣言 i = 1 'iに1を代入 Do While i <= 10 'iが10以下の場合実行する構文 Cells(i, 1).Value = "Hello World" 'i行目、1列目に「Hello World」を入力 i = i + 1 'iに1を加える Loop 'Doに対応する構文 End Sub |
各行の意味はサンプルコード内の右側に補足しています。
iの値が10よりも小さい場合に処理を行います。
実行結果はこのようになります。
For Nextとの違い
For Nextとの違いは、繰り返す回数が明らかであるか、そうでないかの違いです。
こちらはFor Nextの書式ですが、始まりと終わりを最初に指定しています。
「?から?まで繰り返し実行する。」という意味合いになります。
For i=? To ?
処理
Next
これに対して、Do Whileでは、「?という条件を満たすまで繰り返す」という意味です。
Do While 条件
処理
Loop
とはいえ、For Nextを使っても何回繰り返すかわからない処理を行うことができます。
大きな違いは次の項目です。
Do Whileを使うときは無限ループに注意
前の項目で、Do Whileは繰り返す回数が明らかでないときに使うと書きました。
というのも、条件を満たす限り繰り返すからです。
この時、注意しなければならないのは、無限ループを発生させないようにすることです。
例えば、こちらのサンプルコードをご覧ください。
無限ループが発生します。
1 2 3 4 5 6 7 8 9 |
Sub Test2() Dim n As Long n = 1 Do While n <= 10 Cells(n, 1).Value = "無限ループが発生" Loop End Sub |
「 n=n+1」がなく、nの値はずっと1のままなので、「n<=10」の条件を満たし続けます。
すると、永遠に(1,1)のセルに「無限ループが発生」と入力し続けてしまいます。
処理が終わらなくなってしまうのです。
Do Whileを使う場合には、指定する条件に注意しましょう。
まとめ
今回の内容をまとめるとこのようになります。
- Do Whileは条件を満たす限り処理を行う
- For Nextとの違いは繰り返す回数が明らかかどうか
- 無限ループに注意する
はじめのうちは使い分けを意識するよりも、For Nextだけに絞って、繰り返し処理を記述することに慣れるのが良いと考えています。
Kindle Unlimtedでは、月額1,000円でVBAの参考書籍も読み放題の対象です。
特に、逆引きの方は私もダウンロードして使っており、非常に重宝しています。
毎月、ちょっと良いランチ1回で自己投資ができるので最高のコスパです。
読み放題の対象になっているかを確認の上、VBAをより業務で活用するための参考書としてどうぞ。
VBAで行いたい処理から調べる逆引き形式で掲載している本書は私も使っており、重宝しています。普通に買うと3,200円しますが、Kindle Unlimitedであれば0円になります。
こちらは私自身は使っていませんが、Amazonでベストセラーであり、評価も高い書籍です。普通に買うと2,200円ですが、こちらもKindle Unlimitedであれば0円になります。1冊目が合わなければこちらを試すこともできます。
コメント