OfficeType

VBA~For文~Excel

構文

For 変数 = 初期値 To 最終値
繰り返す処理
Next

簡単な例

Sub test1()
Dim a As Integer
For a = 1 To 5
Cells(a, 1) = 1
Next
End Sub

まずFor a = 1 To 5を実行すると変数aに初期値1が代入されa=1からa=5まで5回繰り返すことが決まります。次にCells(a, 1) = 1を実行すると最初はa=1なのでコードの変数aに代入するとCells(1, 1) = 1になりセルA1に1が入力されます。次にNextを実行すると変数aに2が代入されます。繰り返しのコードでなければ次は下の行を実行しますがFor文の場合はForとNextに間の繰り返す処理に再び戻ります。つまり次はCells(a, 1) = 1に戻ります。Nextを実行した時点でa=2になっているのでコードに代入するとCells(2, 1) = 1になりセルA2に1が入力されます。次にNextを実行すると変数aに3が代入されるというようにa=5まで処理が繰り返され、セルA1,A2,A3,A4,A5に1が入力されます。a=5の処理が終わった後にNextを実行すると下の行の実行に移ります。この例ではEnd Subなので終了します。

image-01

繰り返しの加算が1以外の時

上の例ではFor a = 1 To 5でa=1からa=5までaの値を1ずつ加算して5回繰り返しましたが、加算が1以外の時はStepを使います。上の例はFor a = 1 To 5 Step 1というようにStep 1を省略しています。Stepを省略すると1ずつ加算されるので加算が1の場合は省略するのが一般的です。上の例で加算を2にしたい時は下ののコードになります。上のコードではaの値が1,2,3,4,5の順で繰り返されましたが、下のコードではaの値は1,3,5の順で繰り返されるので、セルA1,A3,A5に1が入力されます。

Sub test2()
Dim a As Integer
For a = 1 To 5 Step 2
Cells(a, 1) = 1
Next
End Sub

image-02

初期値が最終値より大きい場合

初期値が最終値より大きい場合はStep マイナスを使います。下のコードを実行するとaの値は5,4,3,2,1の順で繰り返されます。

Sub test3()
Dim a As Integer
For a = 5 To 1 Step -1
Cells(a, 1) = 1
Next
End Sub