Excel VBA Do~Loopステートメントの使い方

Excel VBA

Excel VBA の繰り返し処理はいくつかあります。この記事では、Do~Loopステートメントの使い方について説明します。

Do~Loopの構文

Do~Loopステートメントは、指定した条件が満たされるまで特定の処理を繰り返し実行するための構文です。

この繰り返し処理のことを”ループ”といいます。

構文

Do
    ' 実行したい処理
Loop Until 条件式

または

Do While 条件式
    ' 実行したい処理
Loop

Do~Loopは、条件がTrueの場合に処理を繰り返し実行します。

条件がFalseになるとループを終了します。

Do WhileとDo Untilの違い

Do WhileとDo Untilは、条件の評価が異なります。

Do Whileは条件を満たしている間(条件がTrueの間)、Do Untilは条件を満たすまで(条件がFalseの間)ループを実行します。

Do Whileの例

以下のコードでは、変数counterが5未満の場合にループが続きます。

ループ内のコードは、Debug.Print文を使用して現在のカウンターの値を表示し、counterは1ずつ増加します。

counterが5になると、ループが終了し、メッセージボックスが表示されます。

Sub DoWhileExample()
    Dim counter As Integer
    counter = 0
    
    Do While counter < 5
        ' 実行したい処理
        Debug.Print "カウンターの値: " & counter
        counter = counter + 1
    Loop
    
    MsgBox "ループ終了しました。"
End Sub

 

Do Untilの例

以下のコードでは、変数 counter が 5 になるまでループが続きます。

ループ内のコードは、Debug.Print文を使用して現在のカウンターの値を表示し、counterは1ずつ増加します。

counterが5になると、ループが終了し、メッセージボックスが表示されます。

Sub DoUntilExample()
    Dim counter As Integer
    counter = 0
    
    Do Until counter = 5
        ' 実行したい処理
        Debug.Print "カウンターの値: " & counter
        counter = counter + 1
    Loop
    
    MsgBox "ループ終了しました。"
End Sub

 

Exit Doの利用

Do Loopを途中で終了させるには、Exit Do文を使用します。

これは、特定の条件が満たされた場合にループを終了するのに便利です。

Exit Doの例

以下の例では、変数 counter が 3 になるとループが終了します。

Sub ExitDoExample()
    Dim counter As Integer
    counter = 0
    
    Do
        ' 実行したい処理
        Debug.Print "カウンターの値: " & counter
        
        If counter = 3 Then
            Exit Do ' カウンターが3になったらループを終了
        End If
        
        counter = counter + 1
    Loop
    
    MsgBox "ループ終了しました。"
End Sub

Do Loopの応用例

1.データ処理の自動化
複数の行にわたるデータの合計を計算する場合、Do Loopを使用して効率的に処理できます。

Do Loopの例

Sub Example1()
    Dim total As Double
    Dim row As Integer
    
    row = 2 'データの開始行
    
    Do While Cells(row, 1).Value <> ""  '列Aが空でない限り繰り返す
        total = total + Cells(row, 2).Value ''  '列Bの値を合計に加える
        row = row + 1 '次の行に移動
    Loop
    
    MsgBox "合計は " & total & " です。"
End Sub

 

2.条件に基づくデータのフィルタリング

Do Loopを使用して、特定の条件に基づいてデータをフィルタリングすることも可能です。

例えば、ある列の値が特定の基準を超える行を抽出する場合、次のようなコードが考えられます。

Sub Example2()
    Dim row As Integer
    
    row = 2 'データの開始行
    
    Do While Cells(row, 1).Value <> "" '列Aが空でない限り繰り返す
        If Cells(row, 2).Value > 100 Then '列Bの値が100を超える場合
            'その行のデータを処理するコード
        End If
        row = row + 1 '次の行に移動
    Loop
End Sub

まとめ

今回はExcel VBA のDo~Loopステートメントの使い方について説明しました。

Do Loopは、Excel VBAにおいてデータ処理や条件に基づくループ処理を効果的に行うための重要な構文です。

基本的な構文や応用例を理解し、適切に活用することで、マクロの効率性や柔軟性を向上させることができます。

是非、Do Loopをマスターして、Excelの自動化を効果的に活用してください。

参考
Do...Loop ステートメント (VBA) | Microsoft Learn
タイトルとURLをコピーしました