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なので終了します。
繰り返しの加算が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
初期値が最終値より大きい場合
初期値が最終値より大きい場合は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