【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)」に掲載)

コメントを残す

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