Ctrl欄の制御情報

2023年4月4日

Ctrl欄には、条件分岐(IF)、ループ(FOR、WHILE、DO-WHILE)を入力できます。

IF – END-IF

条件により、以後の処理を分けたい場合、IF文を用います。

IF文
入力値内容(意味)
IF分岐させる条件を記入
(もし~ならば)
ELSE-IFIFにヒットしなかった場合のさらなる条件
(上記以外で~ならば)
ELSE条件にヒットしなかった場合
(それ以外の場合)
END-IFIF文を閉じる
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文
入力値内容
FOR繰り返しの回数を指定
カウンター変数、開始値、終了値、STEP値
FOR i = 1 TO 10 STEP 1
NEXTカウンター変数が終了値以下: FORに戻り、カウンター変数にSTEP値を加算した上で、処理を繰り返す。
カウンター変数が終了値:FOR文を抜ける。
CONTINUE以降の処理を中止してFORに戻り、カウンター変数にSTEP値を加算した上で、処理を繰り返す。
BREAKFOR文を強制的に抜ける。
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文と異なり、色々な条件をかけるので、あらかじめ回数が分かっていない場合でも使用できます。

WHIL文
入力値内容
WHILE繰り返しの条件を指定
条件を満たす場合:WHILE内の処理を行う。
条件を満たさない場合:WENDの次の処理までスキップする。
WENDWHILEに戻る。
CONTINU以降の処理を中止して、WHILEに戻る。
BREAKWHILE文を強制的に抜ける。
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回は必ずループ内の処理を行います。

DO-WHILE文
入力値内容
WSTARTそのまま通過
DO-WHILE繰り返しの条件を指定
条件を満たす場合:WSTARTに戻る。
条件を満たさない場合:次の処理に移動する。
CONTINUE以降の処理を中止して、WSTARTに戻る。
BREAKDO-WHILE文を強制的に抜ける。
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