Categories: excel

初心者でもわかる!VBAの「For文」の基本と応用を徹底解説

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文」をマスターすることで、自動化の幅は大きく広がります。ぜひ、この記事を参考に、さまざまなマクロの中で活用してみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。