同じ処理を繰り返すときに使うのがFor~Nextステートメントです。
以下の例は2~11行目の売上の合計を求めます。
Dim i As Long Dim Lng_uriage As Long For i = 2 To 11 Lng_uriage = Lng_uriage + Cells(i, “B”).Value Next i MsgBox “売上の合計は” & Lng_uriage & “円です” |
For~Nextステートメントでは変数を使用します。この場合 i が最初は2となり2行目、次に3となり3行目 と11行目まで繰り返します。
売上合計用の変数Lng_uriage に2~11行目の売上を代入しています。
Next i の 変数名 i は省略する事ができます。しかし省略せず 変数名を付ける事をお勧めします。
実務のプログラムでは、For~Nextステートメントの中にFor~NextステートメントやIfステートメントなど多くのステートメントが混在します。
For i = 2 To 11の終わりのNextを探すとき変数名があると便利だからです。
For i = 2 To 11 には正確には省略されている部分があります。
For i = 2 To 11 Step 1 が省略されています。
i が 2→3→4・・11 と1つずつ増加させています。
Step 2 とした場合は2つずつ増加させ 2→4→6 となります。
Stepを省略した場合は Step 1 となります。
上の例では上から下に行を追加させていますが、下から上に売上用変数に代入する場合は次のようになります。
Dim i As Long Dim Lng_uriage As Long For i = 11 To 2 Step -1 Lng_uriage = Lng_uriage + Cells(i, “B”).Value Next i MsgBox “売上の合計は” & Lng_uriage & “円です” |
データの一覧があり上に古い日付のデータ、下に新しい日付のデータあり新しいデータを取得する場合などでします。
省略部分 Step 1 を正式に記述する必要はありませんが、Stepを使うことで変数の増減をコントロールできる事を理解して下さい。