【VBA関係】VBAの「Do..Loopステートメント」は条件評価のタイミングにコツがある?|ポテの学習メモ #004
アフィリエイト広告を利用しています。

VBA(Visual Basic for Applications)の「Do...Loopステートメント」は、条件評価のタイミングを指定できる。
- 繰り返し処理の「前」に条件を評価
- 繰り返し処理の「後」に条件を評価
なお、Do..Loop ステートメントの基本的な使い方はこちら。
リンク
基本構文
2つの方法の基本構文は次の通り。
繰り返し処理の「前」に条件を評価する場合:
Do 条件
' 繰り返し処理
Loop
繰り返し処理の「後」に条件を評価する場合:
Do
' 繰り返し処理
Loop 条件
具体例と解説
Do ...Loop
ステートメントには、While
条件とUntil
条件があるが、While
条件を例にして解説する。
繰り返し処理の「前」に条件を評価する場合
Dim counter As Long
counter = 5
Do While counter < 5
Debug.Print "この処理は実行されない"
counter = counter + 1 ' カウンターを進める
Loop
条件(counter < 5
)が最初からFalse
のため、処理が一度も実行されない。
繰り返し処理の「後」に条件を評価する場合
Dim counter As Long
counter = 5
Do
Debug.Print "この処理は1回だけ実行される"
counter = counter + 1 ' カウンターを進める
Loop While counter < 5
処理が1回実行された後に条件(counter < 5
)を評価するため、結果として1回だけ実行される。
まとめ
- 必ず条件に基づいて処理を実行する場合
--> Do 条件(評価が先) - 必ず1回は処理を実行したい場合
--> Loop 条件(処理が先)
実際には①で実装することが多いと思われる。VBAを約20年使っているが、②で実装したことは、ほぼない。