Ctrl欄の制御情報
Ctrl欄には、条件分岐(IF)、ループ(FOR、WHILE、DO-WHILE)を入力できます。
IF – END-IF
条件により、以後の処理を分けたい場合、IF文を用います。
入力値 | 内容(意味) |
---|---|
IF | 分岐させる条件を記入 (もし~ならば) |
ELSE-IF | IFにヒットしなかった場合のさらなる条件 (上記以外で~ならば) |
ELSE | 条件にヒットしなかった場合 (それ以外の場合) |
END-IF | IF文を閉じる |
IF 条件1
処理1
ELSE-IF 条件2
処理2
ELSE-IF 条件3
処理3
ELSE
それ以外の処理
END-IF
- ELSE-IF、ELSEは必要なければ省略できます。
- ELSE-IFは何個でも記述できますが、ELSEは1個しか書けません。
FOR – NEXT
事前に繰り返し回数が分かっている場合には、FOR文を使用できます。
入力値 | 内容 |
---|---|
FOR | 繰り返しの回数を指定 カウンター変数、開始値、終了値、STEP値 FOR i = 1 TO 10 STEP 1 |
NEXT | カウンター変数が終了値以下: FORに戻り、カウンター変数にSTEP値を加算した上で、処理を繰り返す。 カウンター変数が終了値:FOR文を抜ける。 |
CONTINUE | 以降の処理を中止してFORに戻り、カウンター変数にSTEP値を加算した上で、処理を繰り返す。 |
BREAK | FOR文を強制的に抜ける。 |
FOR i = 1 TO 10 STEP 1
IF i = 3
ゼロを出力
CONTINUE
ELSE-IF i = 5
BREAK
END-IF
変数「i」の値を出力
WEND
上記では、カウンター変数「i」を開始値「1」から始めて、STEP値である1ずつ足していって、終了値「10」まで処理を繰り返します。なので、もしIF文がなければ変数「i」の内容を1~10まで1ずつ出力します。「1,2,3,4,5,6,7,8,9,10」
IF文があるので、「i=3」の時はゼロを出力してFORに戻る、「i=5」の時にループを抜けるので、出力結果は「1,2,0,4」となります。
WHILE – WEND
与えられた条件が真(true)の間、処理を繰り返します。FOR文と異なり、色々な条件をかけるので、あらかじめ回数が分かっていない場合でも使用できます。
入力値 | 内容 |
---|---|
WHILE | 繰り返しの条件を指定 条件を満たす場合:WHILE内の処理を行う。 条件を満たさない場合:WENDの次の処理までスキップする。 |
WEND | WHILEに戻る。 |
CONTINU | 以降の処理を中止して、WHILEに戻る。 |
BREAK | WHILE文を強制的に抜ける。 |
ExelセルA1を読み込む
WHILE セルに値がある間
ループ内処理
Excelの行を1つ進める
WEND
処理1
WHILE文は、Excelの対象セルに値がある間、繰り返し処理を続けます。そして、最後に対象行を1加算します。なので、WHILEに来るたびに対象セルはA1, A2, A3…と進んでいきます。
セルに値がなくなると、WHILEの条件を満たさなくなるので、処理1に移動します。
無限ループに注意
WHILE文はFOR文と異なり、自動でカウンター変数を追加しませんので、上記で「Excelの行を1つ進める」部分を忘れると、WHILEの条件は常に「セルA1に値がある間」となり、いつまでたってもループを抜けることができません。書き忘れに注意しましょう。
DO – WHILE(後判定ループ)
最後のDO-WHILE部で条件判定をします。WSTART部はそのまま処理を流すので、最初の1回は必ずループ内の処理を行います。
入力値 | 内容 |
---|---|
WSTART | そのまま通過 |
DO-WHILE | 繰り返しの条件を指定 条件を満たす場合:WSTARTに戻る。 条件を満たさない場合:次の処理に移動する。 |
CONTINUE | 以降の処理を中止して、WSTARTに戻る。 |
BREAK | DO-WHILE文を強制的に抜ける。 |
変数「i」に1を代入
WSTART
変数「i」の値を出力
iを1増やす
DO-WHILE i <= 5 の間
処理1
上記では、変数「i」が1~10の間、「i」の値を出力する処理です。繰り返しの条件は最後のDO-WHILE部で判定します。FOR文やWHILE文でも同じ処理を書くことができ、結果は「1,2,3,4,5」となります。
ただし、先頭で「i」に10を代入した場合、FOR文やWHILE文ではループの先頭で条件を判定するので、ループ内の処理は実行しません。しかしながらDO-WHILE文は後判定なので、最初の1回目は必ず実行され、結果は「10」となります。
ネスト(入れ子構造)
IF文や繰り返し処理(ループ)は内部にIF文やループを持つことができます。
WHILE 条件1
IF 条件2
WHILE 条件3
処理3
WEND
END-IF
WEND
ただし、それぞれでは閉じている必要があり、互いが混じることはできません。次のようなケースはエラーとなります。
WHILE 条件1
IF 条件2
WEND
END-IF