VBA Do Loop文の使い方(処理を繰り返す)

目次

01. While (処理を繰り返す)

Do while ~ Loop

Do ~ Loop while

02. Until (処理を繰り返す)

Do Until ~ Loop

Do ~ Loop Until

03. Exit/continue

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

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

04. 演算子

比較演算子

Do while ~ Loop

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

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文の使い方(処理を繰り返す)
VBA For Each文のサンプル(Excel/Access)

△上に戻る