【PR】を含みます。

プログラミング

【VBA】ループ処理の基本と繰り返し処理の使い方

VBA ループ処理の基本と繰り返し処理の使い方

VBA(Visual Basic for Applications)では、同じ処理を繰り返す際にループ処理を使用します。

ループを適切に活用することで、効率的なコードを書くことができます。

本記事では、VBAのループ処理の基本と、各ループの使い方について解説します。

ループ処理とは?

ループ処理とは、一定の条件を満たすまで、同じ処理を繰り返す仕組みです。

VBAでは以下のようなループが利用できます。

  • For Next ループ

  • For Each Next ループ

  • Do While ループ

  • Do Until ループ

For Next ループ

一定回数処理を繰り返す場合に使用します。

基本構文

以下のコードは、1から10までの値を出力します。

VBA
Copy
Dim i As Integer
For i = 1 To 10
    Debug.Print i
Next i

Stepでカウンタ変数を指定した値ずつ増減させる方法

Stepでカウンタ変数を指定した値ずつ増やす

以下のコードでは、1, 3, 5, 7, 9 と2ずつ増加します。

VBA
Copy
Dim i As Integer
For i = 1 To 10 Step 2
    Debug.Print i
Next i

Stepでカウンタ変数を指定した値ずつ減らす

以下のコードでは、10, 8, 6, 4, 2 と2ずつ減少します。

VBA
Copy
Dim i As Integer
For i = 10 To 1 Step -2
    Debug.Print i
Next i

For Next ループを途中で抜ける方法

Exit Forを使用することで、ループを途中で抜けることができます。

以下のコードは、iが5になった時点でループを終了します。

VBA
Copy
Dim i As Integer
For i = 1 To 10
    If i = 5 Then
        Exit For
    End If
    Debug.Print i
Next i

For Each Next ループ

コレクションや配列の要素を順番に処理する場合に使用します。

基本構文

以下のコードは、現在のブック内のすべてのシート名を出力します。

VBA
Copy
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    Debug.Print ws.Name
Next ws

For Each Next ループを途中で抜ける方法

Exit Forを使用することで、ループを途中で抜けることができます。

以下のコードは、"Sheet3"が見つかった時点でループを終了します。

VBA
Copy
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    If ws.Name = "Sheet3" Then
        Exit For
    End If
    Debug.Print ws.Name
Next ws

Do While ループ

条件を満たしている間、処理を繰り返します。

基本構文

以下のコードは、iが10以下の間、処理を繰り返します。

VBA
Copy
Dim i As Integer
i = 1
Do While i <= 10
    Debug.Print i
    i = i + 1
Loop

Do While ループを途中で抜ける方法

Exit Doを使用することで、ループを途中で抜けることができます。

以下のコードは、iが5になった時点でループを終了します。

VBA
Copy
Dim i As Integer
i = 1
Do While i <= 10
    If i = 5 Then
        Exit Do
    End If
    Debug.Print i
    i = i + 1
Loop

Do Until ループ

条件を満たすまで、処理を繰り返します。

基本構文

このコードは、iが10を超えるまで処理を繰り返します。

VBA
Copy
Dim i As Integer
i = 1
Do Until i > 10
    Debug.Print i
    i = i + 1
Loop

Do Until ループを途中で抜ける方法

Exit Doを使用することで、ループを途中で抜けることができます。

以下のコードは、iが5になった時点でループを終了します。

VBA
Copy
Dim i As Integer
i = 1
Do Until i > 10
    If i = 5 Then
        Exit Do
    End If
    Debug.Print i
    i = i + 1
Loop

まとめ

VBAのループ処理にはさまざまな種類があり、状況に応じて使い分けることが重要です。

以下の表は、各ループ処理の特徴と使いどころをまとめたものです。

ループの種類使用用途
For Next一定回数の繰り返し
For Each Nextコレクションや配列の要素ごとの処理
Do While条件が満たされている間、繰り返し
Do Until条件が満たされるまで、繰り返し

適切なループ処理を使うことで、VBAのコードをよりシンプルで効率的にすることができます。

-プログラミング
-, ,