【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年使っているが、②で実装したことは、ほぼない。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です