Excel VBAのFor文とは、特定のコードブロックを指定回数繰り返し実行するための制御構造です。このループ構文を使用することで、連続したセルの操作や一連の計算を効率的に行うことができます。基本的な形式は以下の通りです。
数値の範囲をループする
このマクロを実行すると、1から10までの数値がImmediateウィンドウに出力されます。
Sub LoopThroughNumbers()
Dim i As Integer
For i = 1 To 10
Debug.Print i ' Immediateウィンドウに1から10を出力
Next i
End Sub
Immediateウインドウとは、VBE(Visual Basic Editor、VBエディター)VBCの開発ようエディターのウインドウを指しています。
セル範囲をループする
このマクロを実行すると、セルA1からA10の値がImmediateウィンドウに出力されます。
Sub LoopThroughRange()
Dim cell As Range
For Each cell In Range("A1:A10")
Debug.Print cell.Value ' Immediateウィンドウにセルの値を出力
Next cell
End Sub
ネストされたFor文
このマクロを実行すると、セルA1からE5までに、行番号と列番号の積が入力されます。
Sub NestedLoopThroughRange()
Dim i As Integer, j As Integer
For i = 1 To 5
For j = 1 To 5
Cells(i, j).Value = i * j ' セルにi*jの結果を入力
Next j
Next i
End Sub
Stepキーワードを使用する
このマクロを実行すると、1から10までの奇数がImmediateウィンドウに出力されます。
Sub LoopWithStep()
Dim i As Integer
For i = 1 To 10 Step 2
Debug.Print i ' Immediateウィンドウに1, 3, 5, 7, 9を出力
Next i
End Sub
Exit Forを使用する
このマクロを実行すると、1から4までの数値がImmediateウィンドウに出力され、iが5になった時点でループが終了します。
Sub ExitForLoop()
Dim i As Integer
For i = 1 To 10
If i = 5 Then
Exit For ' iが5になったらループを終了
End If
Debug.Print i ' Immediateウィンドウに1, 2, 3, 4を出力
Next i
End Sub
For Eachを使用してオブジェクトをループする
このマクロを実行すると、アクティブシートの使用範囲内のすべてのセルのアドレスと値がImmediateウィンドウに出力されます。
Sub LoopThroughAllCells()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
Debug.Print cell.Address, cell.Value ' Immediateウィンドウにセルのアドレスと値を出力
Next cell
End Sub