指定した回数だけ、一連のステートメントを繰り返すフロー制御ステートメントである。
構文
For counter = start To end
[Step step]
[statements]
[Exit For]
[statements]
Next [counter]
For...Next ステートメントの構文は、次の指定項目から構成される。
指定項目 | 内容 |
counter | 必ず指定する。カウンタに使う数値変数を指定します。配列変数およびブール型 (Boolean) に含まれる変数は指定できない。 |
start | 必ず指定する。引数 counter の初期値を指定する。 |
end | 必ず指定する。引数 counter の最終値を指定する。 |
step | 省略可能である。ループを繰り返すごとに引数 counter に加算される値を指定する。引数 step を省略すると、ループを繰り返すごとに引数 counter には 1 が加算される。 |
statements | 省略可能である。ループ内で実行される一連のステートメントで、For と Next の間に記述する。ここに記述したステートメントは、For...Next ステートメントで指定した回数だけ実行される。 |
解説
引数 step には正の数または負の数を指定できます。引数 step で指定した値によりループの実行は次のように制御される。
値 | 実行条件 |
正の数または 0 | counter <= end |
負の数 | counter >= end |
ループ内の一連のステートメントがすべて実行されると、引数 step の値が引数 counter に加算される。この時点で、終了条件が満たされていない場合にはループ内のステートメントが再び実行され、それ以外は、ループから抜け出して Next ステートメントの次のステートメントに制御が移る。
ヒント ループ内で引数 counter の値を変えると、プログラムの内容の理解やデバッグが困難になるので注意すること。
ループから抜け出す別の方法として、ループ内に任意の数の Exit For ステートメントを指定することができる。通常、Exit For ステートメントはいくつかの条件を評価した後で使用する。たとえば、If...Then ステートメントを評価した後で、制御をキーワード Next の次のステートメントに直ちに移る。
For...Next ループはネスト (入れ子) 構造にすることができる。つまり、For...Next ループの内部に別の For...Next ループを入れることができる。ループをネスト (入れ子) させるときは、それぞれの引数 counter に別の変数名を指定すること。正しいステートメントの例を次に示す。
For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 ...
Next K Next J Next I
メモ Next ステートメントの引数 counter を省略すると、引数 counter が指定されているかのように実行を継続する。Next ステートメントが対応する For ステートメントよりも前にあると、エラーが発生する。