MENU

【VBA】Forループの使い方完全ガイド|基本構文から実践例まで徹底解説

VBAでの自動化において、繰り返し処理は非常に重要な要素です。特に、Forループを使用すると指定した回数だけ処理を繰り返すことができます。

この記事では、Forループの基本構文から応用例、注意点までを初心者にもわかりやすく解説します。

目次

Forループの基本構文

Forループは、指定した回数だけ処理を繰り返す構文です。基本的な構文は以下の通りです。

For カウンタ = 開始値 To 終了値 [Step 増減値]
    ' 繰り返し処理の内容
Next カウンタ
  • カウンタ: ループ内で使用される変数
  • 開始値: カウンタの初期値
  • 終了値: カウンタの最後の値
  • Step 増減値(省略可): カウンタの増減値(省略すると1ずつ増加)

例:1から5までの数字を表示する

次のコードでは、1から5までの数字をメッセージボックスで表示します。

Sub BasicForLoop()
    Dim i As Long    
    For i = 1 To 5
        MsgBox "現在の値は " & i & " です"
    Next i
End Sub

Stepを使った増減の制御

Stepキーワードを使用することで、カウンタの増減値を変更できます。これにより、カウントダウンや1つ飛ばしのループなど柔軟な処理が可能になります。

例:カウントダウンする

Sub Countdown()
    Dim i As Long
    For i = 5 To 1 Step -1
        MsgBox "現在の値は " & i & " です"
    Next i
End Sub

このコードを実行すると、5, 4, 3, 2, 1の順番で表示されます。

例:2ずつ増加させる

次のコードでは、1, 3, 5, 7, 9と1つ飛ばしで表示されていきます。

Sub IncrementByTwo()
    Dim i As Long
    For i = 1 To 10 Step 2
        MsgBox "現在の値は " & i & " です"
    Next i
End Sub

For Eachループとの違い

For Eachループは、コレクションや配列の各要素に対して繰り返し処理を行う際に使用します。Forループとの主な違いは、インデックスを使用せずに要素を直接操作できる点です。

For Eachループの基本構文

For Eachループの基本構文は次のコードのように記述できます。

For Each 要素 In コレクション
    ' 繰り返し処理の内容
Next 要素

基本構文だけではイメージしにくいので、具体例を交えて理解を深めていきましょう。

例:セル範囲内の各セルに値を入力する

次の例では、指定したセル範囲内のすべてのセルに値を入力します。

Sub FillCells()
    Dim cell As Range
    For Each cell In Range("A1:A5")
        cell.Value = "Hello"
    Next cell
End Sub

ネストされたForループ

Forループをネスト(入れ子)にすることで、二次元のデータ構造や表形式のデータを処理できます。例えば、行と列を組み合わせてセルに値を入力する場合に有効です。

例:3行3列のセルに掛け算の結果を入力する

Sub MultiplicationTable()
    Dim i As Long, j As Long
    For i = 1 To 3
        For j = 1 To 3
            Cells(i, j).Value = i * j
        Next j
    Next i
End Sub

このコードは、A1からC3のセルに掛け算の結果を入力します。

Exit Forでループを抜ける

Exit Forステートメントを使用すると、特定の条件が満たされた場合にループを途中で終了できます。これにより、無駄な処理を避け、効率的なコードを書くことができます。

例:特定の値が見つかったらExit Forでループを終了する

次の例では、1から10までの数字をチェックし、5が見つかったらループを終了します。

Sub FindValue()
    Dim i As Long
    For i = 1 To 10
        If Cells(i, 1).Value = "Target" Then
            MsgBox i & "行目で見つかりました"
            Exit For
        End If
    Next i
End Sub

このコードは、A1からA10のセルをチェックし、「Target」という値が見つかった時点でメッセージを表示し、ループを終了します。

まとめ

Forループは、VBAにおける繰り返し処理の基本であり、データの操作や自動化に欠かせない構文です。Stepを使った増減の制御、For Eachループとの使い分け、ネストされたループの活用、Exit Forによるループの制御など、さまざまなテクニックを組み合わせることで、より効率的で柔軟なコードを書くことができます。

この記事を参考に、実際の業務でForループを活用してみてください。

この記事を書いた人

めんどくさがりでズボラ。
某自動車メーカーで、VBAやRPAを用いた業務効率化を行っております。

目次