サイトについて      連絡先   検索

VBA Do Loop 文

はじめに

Excel VBA の Do Loop 文を使用してループする方法を紹介します。

Do Loop 文には While と Until の二種類のループの仕方があります。

Do While

Do While は指定した条件の間ループします。

Dim i As Integer

Do While i < 3 ' i が 3 より小さい間ループします。
    i = i + 1
    Debug.Print (i)
Loop

While の位置を Do 側と Loop 側のどちらにも書けます。コードのわかりやすさからも、通常は Do 側に書きます。

Dim i As Integer

Do
    i = i + 1
    Debug.Print (i)
Loop While i < 3 ' i が 3 より小さい間ループします。

Do Until

Do Until は指定した条件になるまでループします。

Dim i As Integer

Do Until i = 3 ' i が 3 になるまでループします。
    i = i + 1
    Debug.Print (i)
Loop

Until の位置を Do 側と Loop 側のどちらにも書けます。コードのわかりやすさからも、通常は Do 側に書きます。

Dim i As Integer

Do
    i = i + 1
    Debug.Print (i)
Loop Until i = 3 ' i が 3 になるまでループします。

Do Loop

While も Until も両方書かないでループする方法もあります。ただしこの方法は無限ループするので、次の項目で紹介する Exit Do でループを抜ける必要があります。

Dim i As Integer

Do
    i = i + 1
    Debug.Print (i)
    Exit Do ' これが無いと無限ループになる
Loop

Do を抜ける

ループの途中に Do を抜けたくなったら Exit Do を使用します。

Dim i As Integer
Do While i < 5
    i = i + 1

    ' i が 3 になったら Do を抜けます。
    If i = 3 Then
        Exit Do
    End If

    Debug.Print (i)
Loop

次の Do へ

ループを一回飛ばして次のループへ移る Continue は VBA には存在しません。

GoTo 文を使用して同じようなことができます。

Dim i As Integer
Do While i < 5
    i = i + 1

    ' i が 3 のときは Continue: 行へ処理を飛ばします。
    If i = 3 Then
        GoTo Continue
    End If

    ' i が 3 のときはここは通りません。
    Debug.Print (i)

Continue:
Loop

関連ページ