ループを使って複数セルを操作する

VBAでは、同じような処理を複数のセルに対して繰り返したいことがよくあります。そのとき便利なのが「ループ処理」です。この記事では、ForループやFor Eachループを使って複数のセルを効率よく操作する方法を解説します。


1. なぜループを使うのか?

たとえば、A列の1行目から10行目までに順番に値を入れたい場合:

Range("A1").Value = 1
Range("A2").Value = 2
Range("A3").Value = 3
'...と続けるのは非効率

このようなコードは手間がかかるうえ、保守性も低くなります。ループ処理を使えば、これを数行で簡潔に記述できます。


2. For ループを使ったセル操作

例:A1~A10に「1〜10」の数字を入力

Sub SetNumbers()
Dim i As Integer
For i = 1 To 10
Range("A" & i).Value = i
Next i
End Sub
  • iの値が1から10まで変化し、それに応じて Range("A" & i) が A1A10 を指します。
  • iをそのまま値として入力しているので、セルにも 1~10 の値が順に入ります。

3. For Eachループを使ったセル操作

特定のセル範囲に対して順番に処理したいときは、For Eachループが便利です。

例:A1~A10に「完了」と入力する

Sub MarkComplete()
Dim c As Range
For Each c In Range("A1:A10")
c.Value = "完了"
Next c
End Sub
  • c は Range("A1:A10") に含まれる各セルを順番に表します。
  • それぞれのセルに “完了” という文字列を代入しています。

4. 条件付きで処理を変える(If文と組み合わせ)

ループ内で If を使えば、条件に応じて処理を分岐できます。

例:B列のA1~A10の値が5以上なら「高い」、それ以外は「低い」と表示

Sub JudgeValues()
Dim i As Integer
For i = 1 To 10
If Range("A" & i).Value >= 5 Then
Range("B" & i).Value = "高い"
Else
Range("B" & i).Value = "低い"
End If
Next i
End Sub

5. 行・列のループ(2重ループ)

表のように行×列で処理するには、2重のForループを使います。

例:A1~C3に「行番号 × 列番号」の値を入れる

Sub FillTable()
Dim i As Integer, j As Integer
For i = 1 To 3
For j = 1 To 3
Cells(i, j).Value = i * j
Next j
Next i
End Sub
  • Cells(i, j) は (行, 列) の形式でセルを指定できます。
  • 1×1、1×2、1×3… といった乗算結果が3×3の範囲に入ります。

6. ループの種類と使い分けまとめ

ループの種類主な用途特徴
For行番号や列番号で制御決まった回数を繰り返すのに適している
For Eachセル範囲やコレクション操作範囲内のすべての要素に処理を行える

7. まとめ

  • 複数セルに対して同じ処理をしたいときはループ処理が便利。
  • For回数指定型For Each範囲反復型
  • If文と組み合わせて、条件に応じた処理分岐も可能。
  • 表形式データには2重ループが役立つ。

ループ処理はVBAの基本中の基本。これをマスターすれば、より柔軟な自動化ができるようになります!

コメント

タイトルとURLをコピーしました