VBAのLoopで繰り返し処理を行う方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

Loopの概要

繰り返し処理 VBAの予約語

Loop

概要 Loop ステートメントは、VBAの繰り返し処理(ループ)で使用され、Do While や Do Until などの制御文と組み合わせて使用されます。

わかりやすく説明 Loop は、「この処理を何回も繰り返してね!」という命令です。特定の条件を満たすまで、または一定回数繰り返すように設定できます。

  • 繰り返し処理を行うために使用される。
  • 通常、Do While または Do Until と組み合わせて使用。
  • 条件を満たさなくなるまで、または特定の条件を満たすまでループを続ける。
  • 無限ループに注意が必要。

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 NextErr.Clear を使用する。

よくある質問

Q: Loop の代わりに For Next ループを使うべきですか?
A: 回数が決まっている場合は For Next の方が分かりやすいですが、条件付きの繰り返しには Do WhileDo Until が適しています。
Q: Loop が止まらなくなりました。どうすればいいですか?
A: Ctrl + Break を押すと強制的に実行を停止できます。
Q: 途中でループを抜けるには?
A: Exit Do を使うとループを強制終了できます。
Q: Loop の中で処理を一時停止できますか?
A: Application.Wait を使うと一定時間停止できます。

まとめ

  • Loop は繰り返し処理を行うために使用される。
  • Do While または Do Until と組み合わせて使用する。
  • Excelのセル操作にも活用できる。
  • 無限ループを防ぐために、適切な条件設定と Exit Do を活用する。
  • エラーハンドリングを適用し、予期しないエラーを防ぐ。