VBA(Visual Basic for Applications)は、ExcelなどのMicrosoft製品で自動処理を実現するための便利なツールです。中でも「For文」は、繰り返し処理を行うために欠かせない基本構文のひとつです。この記事では、VBA初心者にもわかりやすく「For文」の使い方や書き方を解説し、実際の例を交えて応用的な使い方まで丁寧にご紹介します。これからVBAを学ぶ方、基礎を復習したい方にもおすすめの内容です。
VBAにおける「For文」は、ある処理を繰り返し実行するための制御構文です。繰り返しの回数を自分で指定する「For…Next文」と、条件を満たす限り繰り返す「For Each…Next文」の2種類が存在します。
まずは、最も基本的な「For…Next文」について見ていきましょう。
Dim i As Integer
For i = 1 To 10
' 繰り返したい処理
Next i
このコードは、「i」が1から10までの値をとりながら、ループ内の処理を繰り返します。10回処理が実行されることになります。
Sub LoopTest()
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End Sub
このマクロを実行すると、A列の1行目から10行目までに、1から10の数値が入力されます。
通常、「For i = 1 To 10」と書くと、iの値は1ずつ増加します。ですが、「Step」を使うことで、増加値を変更することができます。
Sub StepUp()
Dim i As Integer
For i = 1 To 10 Step 2
Debug.Print i
Next i
End Sub
この場合、iの値は「1, 3, 5, 7, 9」と出力されます。
Sub StepDown()
Dim i As Integer
For i = 10 To 1 Step -1
Debug.Print i
Next i
End Sub
このコードは、iの値を10から1まで1ずつ減らして出力します。
For文は、If文と組み合わせることで、より複雑な処理を実現できます。
Sub EvenNumbers()
Dim i As Integer
For i = 1 To 10
If i Mod 2 = 0 Then
Debug.Print i & "は偶数です"
End If
Next i
End Sub
この例では、1から10までの数のうち、偶数だけを抽出して処理しています。
「For Each…Next文」は、コレクションや配列などの要素を順番に処理するのに便利です。
Dim セル As Range
For Each セル In Range("A1:A10")
セル.Value = "OK"
Next セル
このマクロは、A1からA10の各セルに「OK」と入力します。
ループ中に特定の条件を満たした場合、ループを途中で終了したいことがあります。その場合は「Exit For」を使います。
Sub ExitExample()
Dim i As Integer
For i = 1 To 10
If i = 5 Then
Exit For
End If
Debug.Print i
Next i
End Sub
このコードは、iが5になった時点でループを抜けるので、出力は「1, 2, 3, 4」で止まります。
Sub FillBlanks()
Dim i As Integer
For i = 1 To 20
If IsEmpty(Cells(i, 1)) Then
Cells(i, 1).Interior.Color = RGB(255, 255, 0) ' 黄色
End If
Next i
End Sub
このマクロは、A列の1〜20行目の中で空白のセルを黄色に塗りつぶします。
VBAの「For文」は、繰り返し処理を効率的に行うための基本中の基本です。
この記事では、以下のような内容を取り上げました。
VBAの基本構文である「For文」をマスターすることで、自動化の幅は大きく広がります。ぜひ、この記事を参考に、さまざまなマクロの中で活用してみてください。