VBA(Visual Basic for Applications)は、ExcelなどのMicrosoft製品で自動処理を実現するための便利なツールです。中でも「For文」は、繰り返し処理を行うために欠かせない基本構文のひとつです。この記事では、VBA初心者にもわかりやすく「For文」の使い方や書き方を解説し、実際の例を交えて応用的な使い方まで丁寧にご紹介します。これからVBAを学ぶ方、基礎を復習したい方にもおすすめの内容です。
VBAにおける「For文」とは?
VBAにおける「For文」は、ある処理を繰り返し実行するための制御構文です。繰り返しの回数を自分で指定する「For…Next文」と、条件を満たす限り繰り返す「For Each…Next文」の2種類が存在します。
まずは、最も基本的な「For…Next文」について見ていきましょう。
For…Next文の基本構文と使い方
基本構文
Dim i As Integer
For i = 1 To 10
' 繰り返したい処理
Next i
このコードは、「i」が1から10までの値をとりながら、ループ内の処理を繰り返します。10回処理が実行されることになります。
実行例:セルに1から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の数値が入力されます。
Step句を使って増減値を変更する
通常、「For i = 1 To 10」と書くと、iの値は1ずつ増加します。ですが、「Step」を使うことで、増加値を変更することができます。
2ずつ増やす例
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ずつ減らして出力します。
ループの中で処理を分岐させる(If文との併用)
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文の基本と使い方
「For Each…Next文」は、コレクションや配列などの要素を順番に処理するのに便利です。
基本構文
Dim セル As Range
For Each セル In Range("A1:A10")
セル.Value = "OK"
Next セル
このマクロは、A1からA10の各セルに「OK」と入力します。
For文を途中で終了させる「Exit For」
ループ中に特定の条件を満たした場合、ループを途中で終了したいことがあります。その場合は「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」で止まります。
For文を使う際の注意点
- 無限ループに注意
For文はToの終点まで到達しないと終了しません。Stepの指定が不適切だとループが永遠に続く可能性があります。 - ループの中で変数を書き換えない
ループ制御用の変数(例:i)をループの中で意図的に変更すると、予測できない動作になることがあります。 - 効率を意識する
何千件、何万件と処理する場合、ループの中で重い処理(たとえばファイル操作など)を行うと、パフォーマンスが著しく低下することがあります。
実践!For文を使ったサンプルマクロ
1列の空白セルを塗りつぶす
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文」は、繰り返し処理を効率的に行うための基本中の基本です。
この記事では、以下のような内容を取り上げました。
- For…Next文の基本とステップの使い方
- For Each…Next文の構文と活用方法
- If文との併用やExit Forでのループ制御
- 実践的な使用例
VBAの基本構文である「For文」をマスターすることで、自動化の幅は大きく広がります。ぜひ、この記事を参考に、さまざまなマクロの中で活用してみてください。