このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】Do Loopの使い方(While, Until)

2024年4月26日

Do Loopの使い方(While, Until)

今回はVBAのDo Loop構文の使い方を紹介します。

Forが一定回数の繰り返しなのに対し、Do Loopは条件を満たすまで繰り返されます。

対して難しくないのですが、私もDo Loopを使うときは迷うことがあります。

その原因はDo Loopのパターンが多いためです。

  1. Do (While or Until)
  2. Loop (While or Until)
  3. Do Loopのみ

Do Loopはこれら3つのパターンがあります。

特に1と2は微妙な違いなので気を付けないと意外と間違えてしまいます。

この3つの違いを説明しますので、正確な挙動を理解してみましょう。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらうのはいかがでしょうか?
マクロの作成請負をしていますので、こちらからご相談ください。

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よりも、可読性が良いこともあるのでこの書き方も活用してみてください。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらうのはいかがでしょうか?
マクロの作成請負をしていますので、こちらからご相談ください。

VBA

Posted by やろまい