【VBA】Do Loopの使い方(While, Until)
今回はVBAのDo Loop構文の使い方を紹介します。
Forが一定回数の繰り返しなのに対し、Do Loopは条件を満たすまで繰り返されます。
対して難しくないのですが、私もDo Loopを使うときは迷うことがあります。
その原因はDo Loopのパターンが多いためです。
- Do (While or Until)
- Loop (While or Until)
- Do Loopのみ
Do Loopはこれら3つのパターンがあります。
特に1と2は微妙な違いなので気を付けないと意外と間違えてしまいます。
この3つの違いを説明しますので、正確な挙動を理解してみましょう。
Do (While or Until)
Sub Sample1()
Dim i As Integer
i = 4
Do While i <= 3 '最初に判定される
'処理されない
Debug.Print i
i = i + 1
Loop
End Sub
Do Whileの場合、ループの最初で判定が行われます。
そのためサンプルコードのように最初に条件(i <= 3)を満たしていないと、Doループ内の処理は一度も行われません。
Loop (While or Until)
Sub Sample2()
Dim i As Integer
i = 4
Do
'必ず一度は処理される
Debug.Print i
i = i + 1
Loop While i <= 3 '最後に判定される
End Sub
Loop Whileの場合、ループの最後で判定が行われます。
サンプルコードのように最初に条件を満たしていなくても、必ず一度はDoループ内の処理が実行されます。
Do Loopのみ
Sub Sample3()
Dim i As Integer
i = 1
Do
Debug.Print i
i = i + 1
'If文でExit処理を書く
If i > 3 Then Exit Do
Loop
End Sub
Do Loopは条件(While or Until)を書かずに使用することもできます。
その場合、何もしないと無限ループとなってしまいます。
使い方としてはサンプルコードのようにIf文でExit処理を書いてあげます。
すると、If文に記載した条件にマッチしたときのみループ処理が終了することとなります。
WhileやUntilよりも、可読性が良いこともあるのでこの書き方も活用してみてください。