Loopの概要
繰り返し処理 VBAの予約語 | ||
Loop 概要 Loop ステートメントは、VBAの繰り返し処理(ループ)で使用され、Do While や Do Until などの制御文と組み合わせて使用されます。 わかりやすく説明 Loop は、「この処理を何回も繰り返してね!」という命令です。特定の条件を満たすまで、または一定回数繰り返すように設定できます。 |
||
|
Loopの基本的な使い方
Loop を使用して、1から10までの数値を順番に表示する基本的な例です。
Sub DoWhileLoopExample()
Dim i As Integer
i = 1
Do While i <= 10
Debug.Print i ' イミディエイトウィンドウに出力
i = i + 1
Loop
End Sub
解説:
Do While i <= 10
で、i
が 10 以下の間ループを実行。Debug.Print i
で現在のi
の値をイミディエイトウィンドウに表示。i = i + 1
でカウントを増やし、最終的に条件を満たさなくなったらループ終了。
Do Until を使ったLoop
Do Until を使用すると、指定した条件を満たすまでループを続けます。
Sub DoUntilLoopExample()
Dim i As Integer
i = 1
Do Until i > 10
Debug.Print i
i = i + 1
Loop
End Sub
解説:
Do Until i > 10
は、i
が 10 を超えるまでループを続ける。- 最終的に
i = 11
になった時点でループが終了。
ExcelでのLoopの活用例
Excelのセルに 1 から 10 までの数値を入力する例です。
Sub FillCellsWithLoop()
Dim i As Integer
i = 1
Do While i <= 10
Cells(i, 1).Value = i ' A列に値を入力
i = i + 1
Loop
End Sub
解説:
- A1セルからA10セルまで、1~10の値を順番に入力する。
- セル操作と組み合わせることで、Excelの自動処理を行える。
無限ループを防ぐ方法
Loop の条件を間違えると、プログラムが止まらなくなる(無限ループ)可能性があります。以下のように Exit Do
を使ってループを強制終了できます。
Sub PreventInfiniteLoop()
Dim i As Integer
i = 1
Do While True
Debug.Print i
i = i + 1
If i > 10 Then Exit Do ' 10回繰り返したらループを終了
Loop
End Sub
解説:
Do While True
は常に真なので、無限ループになる。- 10回繰り返したら
Exit Do
でループを抜ける。
エラーを回避する方法
Loopの中でエラーが発生した場合、プログラムが止まらないようにエラーハンドリングを追加できます。
Sub SafeLoop()
Dim i As Integer
i = 1
On Error Resume Next
Do While i <= 10
Cells(i, 1).Value = 100 / (10 - i) ' 0除算エラーが発生する可能性
If Err.Number <> 0 Then
MsgBox "エラー発生: " & Err.Description, vbExclamation, "エラー"
Err.Clear
Exit Do ' エラーが出たらループを抜ける
End If
i = i + 1
Loop
End Sub
解説:
- 数式
100 / (10 - i)
でi = 10
のときゼロ除算エラーが発生。 - エラー発生時にメッセージを表示し、ループを強制終了。
Loopの注意事項
- 無限ループに注意: 条件を適切に設定し、
Exit Do
を活用する。 - Excelの処理負荷に注意: 大量のセルを処理する場合は
Application.ScreenUpdating = False
を使うと高速化できる。 - エラー処理を追加: 予期しないエラーに備えて
On Error Resume Next
やErr.Clear
を使用する。
よくある質問
- Q: Loop の代わりに For Next ループを使うべきですか?
- A: 回数が決まっている場合は
For Next
の方が分かりやすいですが、条件付きの繰り返しにはDo While
やDo Until
が適しています。 - Q: Loop が止まらなくなりました。どうすればいいですか?
- A:
Ctrl + Break
を押すと強制的に実行を停止できます。 - Q: 途中でループを抜けるには?
- A:
Exit Do
を使うとループを強制終了できます。 - Q: Loop の中で処理を一時停止できますか?
- A:
Application.Wait
を使うと一定時間停止できます。
まとめ
- Loop は繰り返し処理を行うために使用される。
Do While
またはDo Until
と組み合わせて使用する。- Excelのセル操作にも活用できる。
- 無限ループを防ぐために、適切な条件設定と
Exit Do
を活用する。 - エラーハンドリングを適用し、予期しないエラーを防ぐ。