「StiLL」 デザイン情報288 StiLLコマンド-- 繰返し処理の構造 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
【テーマ】 繰返し処理(Loop)を重ねて実行したい時などで苦労したことはありませんか? 今回は2重の繰返し処理の構造をご紹介します。 |
【方法】 StiLLボタンの「繰返し実行(BtLoop)」ボタンを2つ使用します。 |
【参考】 StiLLでは回数で繰返し処理を行う為、回数を可変とする場合は数式で指定します。 繰返し回数の中で条件により処理の(行う/行わない)を判定する場合は「条件分岐実行(BtPushIf)」ボタンで制御します。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■ 今回の内容 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ここでは2重の繰返し処理(Loop)についてご説明いたします。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
StiLLでの繰返しは回数で指定します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Loop開始とLoop終了の間の(繰返す処理)を指定した回数分実行します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(1つの繰返し処理) (2つ[2重]の繰返し処理) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5回 | 5回 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
外側の繰返し | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3回 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
・・・・・内側の繰返し | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
↑(繰返す処理)を 5回実行します。 ↑(繰返す処理)を 5×3=15回実行します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上記の場合、Loop1=1,Loop2=1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上記の場合、Loop1=1,Loop2=2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上記の場合、Loop1=1,Loop2=3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上記の場合、Loop1=2,Loop2=1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上記の場合、Loop1=2,Loop2=2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上記の場合、Loop1=2,Loop2=3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
↑図の(開始/終了)は1つのStiLLボタンで設定します。 ・・・・・・・・・・・・ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上記の場合、Loop1=5,Loop2=1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上記の場合、Loop1=5,Loop2=2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上記の場合、Loop1=5,Loop2=3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
の順番で15回処理を実行します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
・ポイント | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. StiLLでの繰返し処理は回数で指定します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2. 1つの繰返し処理で回数に5を指定した場合(繰返す処理)を5回実行します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3. 2つ[2重]の繰返し処理ではLoop1の回数×Loop2の回数分(繰返す処理)を実行します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■ ボタンの作成と設定 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
今回使用するボタンを赤枠で示します。(リボン - StiLL - ボタンテンプレート) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
今回の処理全体図を以下に示します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Loop1:「繰返し実行(BtLoop)」ボタンの設定 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
設定ダイアログを開き以下のように設定します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1.オブジェクト名に繰返し実行するボタン名を指定します。(本例では2つ目の繰返し処理 [Flowchart: Process 2] を指定) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2.繰返し回数を指定します。(本例ではセルD3を参照) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
※30回以内は下段の(回数指定)をチェックすることでボタン内での設定も可能です。(右図オレンジ枠参照) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.実行回数出力位置を指定します。(本例ではセルE3に出力) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
↑ボタン内で繰返し回数を固定で設定する場合 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ALoop2:「繰返し実行(BtLoop)」ボタンの設定 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上図と同様に設定ダイアログを開き以下のように設定します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1.オブジェクト名に繰返し実行するボタン名を指定します。(本例ではメッセージボックス [Flowchart: Display 3] を指定) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2.繰返し回数および実行回数出力位置を指定します。(本例ではセルD5とセルE5を指定) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
B「メッセージボックス(BtMessage)」ボタンの設定 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
本例では処理状況を確認する目的でメッセージボタンを設定しています。 ボタンのイメージ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1.メッセージの設定ではセル値(D8:D9)を指定しています。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
各セルには以下の数式を入力しています。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
セルD8:="現在、Loop1の実行回数は "&E3&"/"&D3&"、" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
セルD9:=" Loop2の実行回数は "&E5&"/"&D5&" です。" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
メッセージ表示例(開始時) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■ ボタンの実行 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
完成したボタンの(Loop1)ボタンを実行することで2重ループの繰返し処理が行われます。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2つ目の(Loop2)ボタンで毎回メッセージを表示します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■ ご参考までに | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. StiLLでは回数の指定で繰返し処理を行う為、繰返し回数を可変とする場合は数式で指定します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
例:Sheet2のセルA1から展開されたデータ全件分を処理する場合 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
数式:(本例ではセルD3)=COUNTA(Sheet2!A:A)-1 ・・・ 見出し行がある前提で1を引いています | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2. 指定した繰返し回数の中で条件により処理の(行う/行わない)を制御する方法。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
「条件分岐実行(BtPushIf)」ボタンを作成して繰返し実行ボタンのオブジェクト名に設定します。(フローチャート: 判断 1) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ボタン配置イメージ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
例:奇数回の時のみ処理を行う場合 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
任意のセルに実行回数をもとにした数式を入力して、BtPushIfではそのセルが1の時処理を行う設定とします(右図参照) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]()
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ボタンの設定イメージ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Loop2のボタン 条件分岐実行(BtPushIf)のボタン | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
セルD7が1の時、上段記載のメッセージボックスを表示する設定 ⇒ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
補足1:「条件分岐実行(BtPushIf)」 StiLLボタンで最大3通りの処理を分岐することが出来ます。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
補足2:右図下の青枠(ボタン実行時に終了)をチェックすると設定したボタンの実行後に繰返し処理を終了します。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
⇒ 異常値などの検出で処理を分岐し、メッセージ表示などのエラー処理後に繰返し処理を中断させることが出来ます。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
※ボタン連続実行ボタンにこの処理をリストした場合は以降のリストは連続実行されませんのでご注意ください。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(各ボタンの設定内容の詳細はStiLLヘルプをご確認ください) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright(C) アイエルアイ総合研究所 無断転載を禁じます | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||