VBA Do Loop文のサンプル(Excel/Access)

VBAのDo Loop文のサンプルです。処理を繰り返す時に使用します。
Excel、Accessとも同じです。

目次

While Do while ~ Loop
  Do ~ Loop while
Until Do Until ~ Loop
  Do ~ Loop Until
Exit ループ文を途中で抜ける(Exit Do)
(continue) ループ処理で処理をスキップする
演算子 比較演算子

Do while ~ Loop

Do While 条件式
  繰り返される箇所
Loop
  • 条件式が成立している間、処理が繰り返されます。
  • 最初から条件が成立していない場合は、処理は1回も実行されません。

Do while ~ Loopのサンプルです。

Sub test1()
    Dim a As Integer
    a = 0
    
    Do While a < 5
        Debug.Print a '0 1 2 3 4
        a = a + 1
    Loop
End Sub

5行目は、a< 5の間はループ処理が行われ、aが5になるとループが終了します。
6行目は、0から4が表示されます。

Do ~ Loop while

Do 
  繰り返される箇所
Loop While 条件式
  • 条件式の判定が後ろにあるので、処理は必ず1回は実行されます。
  • 条件式が成立している間、処理が繰り返されます。

Do ~ Loop whileのサンプルです。

Sub test1()
    Dim a As Integer
    a = 0
    
    Do
        Debug.Print a '0 1 2 3 4
        a = a + 1
    Loop While a < 5
End Sub

8行目は、a< 5の間はループ処理が行われ、aが5になるとループが終了します。
6行目は、0から4が表示されます。

以下は、MicrosoftのVBAのDo...Loop文のリンクです。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/doloop-statement

Do Until ~ Loop

Do Until 条件式
  繰り返される箇所
Loop
  • 条件式が成立するまで、処理が繰り返されます。
  • 最初から条件が成立している場合は、処理は1回も実行されません。

Do Until ~ Loopのサンプルです。

Sub test1()
    Dim a As Integer
    a = 0
    
    Do Until a > 3
        Debug.Print a '0 1 2 3
        a = a + 1
    Loop
End Sub

5行目は、a> 3の間はループ処理が行われ、aが4になるとループが終了します。
6行目は、0から3が表示されます。

Do ~ Loop Until 

Do 
  繰り返される箇所
Loop Until 条件式
  • 条件式の判定が後ろにあるので、処理は必ず1回は実行されます。
  • 条件式が成立していない間、処理が繰り返されます。

Do ~ Loop Until のサンプルです。

Sub test1()
    Dim a As Integer
    a = 0
    
    Do
        Debug.Print a '0 1 2 3
        a = a + 1
    Loop Until a > 3
End Sub

8行目は、a>3になるまでループ処理が行われ、aが4になるとループが終了します。
6行目は、0から3が表示されます。

ループ文を途中で抜ける(Exit Do)

  • Exit DoでDoのループ文から抜けることができます。
Sub test1()
    Dim a As Integer
    a = 0
    
    Do While a < 5
        If (a = 3) Then
            Exit Do
        End If
        Debug.Print a '0 1 2
        a = a + 1
    Loop
End Sub

7行目は、Exit Doを使用してDoのループから抜けています。
9行目は、0,1,2のみ表示されます。

ループ処理で処理をスキップする

ループ処理で処理をスキップするサンプルです。

Sub test1()
    Dim a As Integer
    a = 0
    
    Do While a < 5
point1:
        If (a = 3) Then
            a = a + 1
            GoTo point1
        End If
        Debug.Print a '0,1,2,4が出力される
        a = a + 1
    Loop
End Sub

6行目はラベルです。
VBA文では、Continueが使用できません。
そのため、9行目のようにGoToとラベルを指定します。
このサンプルでは8行目の加算がないと無限ループになるので注意して下さい。

比較演算子

上記コードの<は比較演算子です。
以下は、VBAの比較演算子の一覧です。

比較演算子 説明
a = b aとbの値は等しい
a <> b aとbの値は等しくない
a > b aはbより大きい
a >= b aはbより大きい または 等しい
a < b aはbより小さい
a <= b aはbより小さい または 等しい

関連の記事

VBA For文 処理を繰り返すサンプル(Excel/Access)
VBA For Each文のサンプル(Excel/Access)

△上に戻る