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

