【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年使っているが、②で実装したことは、ほぼない。
この記事を書いた人
- ■人生を追求する凡人■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢■光学・機械系エンジニア(歴20年、内マネジメント10年、特許数件権利化)/副業フリーランスエンジニア■読書・文学愛好■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成を研究。■VBAアプリ開発サービス提供中(業務委託 / VBA使用経験20年)■Python愛好(歴5年)■VBAエキスパート「Excel VBA スタンダード」(上級者向け資格)/ Python 3 エンジニア認定基礎(経済産業省「ITスキル標準(ITSS)」に掲載)