Doの概要
条件を満たす間、繰り返し処理を行う VBAの予約語 | ||
Do 概要 Do ステートメントは、VBAで繰り返し処理(ループ)を行うために使用されます。条件を満たしている間、または満たすまでループを続けることができます。 わかりやすく説明 条件を満たす間、または満たすまで繰り返し処理を実行する命令。 |
||
|
Do Whileの基本的な使い方
以下の例では、Do While を使って、条件が満たされる間ループを実行します。
Sub TestDoWhile()
Dim i As Integer
i = 1
Do While i <= 5
MsgBox "カウント: " & i
i = i + 1
Loop
End Sub
解説:
Do While i <= 5
: i が 5 以下の間、ループを実行。i = i + 1
: ループごとに i を 1 増加。- カウントが 6 になると条件が満たされなくなり、ループが終了。
Do Untilの基本的な使い方
以下の例では、Do Until を使って、条件が満たされるまでループを実行します。
Sub TestDoUntil()
Dim i As Integer
i = 1
Do Until i > 5
MsgBox "カウント: " & i
i = i + 1
Loop
End Sub
解説:
Do Until i > 5
: i が 5 を超えるまでループを実行。i = i + 1
: ループごとに i を 1 増加。- カウントが 6 になると条件が満たされ、ループが終了。
条件を後置するDoループ
Doループは、条件を前置する(Do While
や Do Until
)だけでなく、後置することも可能です。
Sub TestPostCondition()
Dim i As Integer
i = 1
Do
MsgBox "カウント: " & i
i = i + 1
Loop While i <= 5
End Sub
解説:
- 最初に必ず1回処理を実行する。
Loop While i <= 5
で条件をチェックし、満たす間はループを続ける。
Excel VBAでのDoループの活用
Excelシートのデータを順番に処理する例です。
Sub ReadCells()
Dim rowNum As Integer
rowNum = 1
Do While Cells(rowNum, 1).Value <> ""
MsgBox "A" & rowNum & " の値: " & Cells(rowNum, 1).Value
rowNum = rowNum + 1
Loop
End Sub
解説:
- セルA列の値を1行ずつ読み取る。
- 空白セルが出るまでループを続ける。
Doの注意事項
- 無限ループに注意: 条件を適切に設定し、必ずループが終了するようにする。
- 後置条件付きループは必ず1回実行される: 条件を後置すると、最低1回はループが実行される。
- Exit Do を活用する: ループを途中で抜ける場合は
Exit Do
を使う。
よくある質問
- Q: Do While と Do Until の違いは?
- A: Do While は条件が満たされる間ループを続け、Do Until は条件が満たされるまでループを続けます。
- Q: ループを途中で終了するには?
- A:
Exit Do
を使用すると、任意のタイミングでループを抜けられます。 - Q: 無限ループになったときの対処法は?
- A:
Ctrl + Break
キーで処理を強制終了できます。
まとめ
- Doループは、条件を満たす間または満たすまで繰り返し処理を実行する。
- 条件を前置(Do While / Do Until)または後置(Loop While / Loop Until)できる。
- Excel VBAのデータ処理や自動化に活用できる。
- 無限ループを防ぐため、適切な条件を設定する。
- ループを途中で終了する場合は
Exit Do
を使用する。