| 「StiLL」 デザイン情報222 StiLLコマンド-- 繰返し実行の基本を覚えよう | ||||||||||||||||||||||||||||
| 【テーマ】 今回は、プログラムの基本的な機能ながら、作るのが難しい「繰返し(ループ)処理」について、考え方から作り方までをStiLLを使って解説します。 |
【方法】 <StiLLボタン> ・繰返し実行(BtLoop) ・メッセージ分岐実行(BtMessageIf) <Excel関数> ・ROWS/COUNTA関数 ・INDEX関数 |
【参考】 長時間終了しない事がないよう、全体の処理時間を踏まえて作成しましょう。 |
||||||||||||||||||||||||||
| ■ 今回の内容 | ||||||||||||||||||||||||||||
| 「順次」、「分岐」、「繰返し」はプログラムの基本的な処理です。 | ||||||||||||||||||||||||||||
| 今回は「繰返し」処理についてクローズアップして、基本的な考え方と、使うStiLLボタンや関数などについてご紹介します。 | ||||||||||||||||||||||||||||
| ※ 分岐処理については、前号(第221回配信分)をご参照ください。 | ||||||||||||||||||||||||||||
| 【StiLLメールサービス バックナンバー】 「StiLL」 デザイン情報221 StiLLコマンド-- メッセージのある処理の中断や分岐処理を簡単に | ||||||||||||||||||||||||||||
| 【プログラムの例】:データを読み込み、件数分印刷するプログラム | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| ■ 「繰返し実行」ボタンの解説 | ||||||||||||||||||||||||||||
| 「繰返し実行」ボタンの設定は以下の通りです。 | ||||||||||||||||||||||||||||
| システムでは、直接このボタンを押すようなケースは少なく、連続するプログラムの途中で実行される事が多いです。 | ||||||||||||||||||||||||||||
| 「繰返し実行(BtLoop)」ボタンの設定画面 | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| !ポイント | ||||||||||||||||||||||||||||
| 同じ内容を繰り返すだけなら、「ボタン連続実行」で同じボタンを回数分指定すれば良いだけですが、 | ||||||||||||||||||||||||||||
| 繰り返すプログラム中の内容を、各回ごとに変える事に繰返し処理の難しさがあります。 | ||||||||||||||||||||||||||||
| (例:顧客ごとに内容を変えて差込印刷する/データを分割して複数ファイルに保存するなど) | ||||||||||||||||||||||||||||
| 宛名やファイル名など、毎回変わる部分を「変数」と言いますが、StiLLではこの変数部分を、関数などを使い、セルに作成します。 | ||||||||||||||||||||||||||||
| ■ ケース1:指定回数分の繰返し実行と変数について | ||||||||||||||||||||||||||||
| まずは、3回メッセージを表示する簡単な例から見てみましょう。 | ||||||||||||||||||||||||||||
| 各メッセージは、それぞれ「1回目・2回目・3回目」と、変わりながら表示するようにします。 | ||||||||||||||||||||||||||||
| 手順1:変数セルの準備 | ||||||||||||||||||||||||||||
| 「繰返し実行」ボタンが回数を出力するセルと、「○回目」とメッセージを表示するセルを用意します。 | ||||||||||||||||||||||||||||
| 下図では、黄色セル「E7」が出力先、青色セル「E12」がメッセージを表示するセルです。 | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| !ポイント | ||||||||||||||||||||||||||||
| 黄色のセル「E7」には実行時、繰返しボタンから自動で1〜3の値が出力されます。 | ||||||||||||||||||||||||||||
| 青色のセル「E12」は 「=E7&"回目"」 と数式を入れることで、毎回 「1〜3回目」と順番に表示されることになります。 | ||||||||||||||||||||||||||||
| 手順2:メッセージボタンの作成 | ||||||||||||||||||||||||||||
| 青色セル「E12」を、メッセージとして表示するよう、下図の設定をします。 | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| 手順3:連続実行ボタンの作成 | ||||||||||||||||||||||||||||
| 手順2で作成したメッセージボタンを実行する「連続実行」ボタンを設定します。 | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| !ポイント | ||||||||||||||||||||||||||||
| 今回の事例では、単一のメッセージボタンしか実行しないので、この連続実行ボタンは無くても良いのですが、 | ||||||||||||||||||||||||||||
| 実際のケースでは、連続実行ボタンで一回分の連続処理を指定することが殆どです。 | ||||||||||||||||||||||||||||
| 手順4:繰返しボタンの作成 | ||||||||||||||||||||||||||||
| 「繰返し」ボタンで実行するボタンと、回数を出力するセルを指定します。 | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| 実行結果 | ||||||||||||||||||||||||||||
| もうお判りだと思いますが、実行すると、それぞれ「1〜3回目」とメッセージが表示されます。 | ||||||||||||||||||||||||||||
| ここでは、青色セル「E12」が、毎回内容が変わる「変数」になります。 | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| ■ ケース2:データの件数分繰り返す場合 | ||||||||||||||||||||||||||||
| 次は、データの件数によって何回実行するか変わるケースです。 | ||||||||||||||||||||||||||||
| 下図では、セルG12〜G14に支店のリストがあり、その件数分メッセージを表示する例となります。 | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| 手順1:最大回数をセルに表示する | ||||||||||||||||||||||||||||
| 支店数分実行するということは、「支店の数を数える」必要があります。 | ||||||||||||||||||||||||||||
| ここでは、セルG7にその数を表示し、最大回数としています。 | ||||||||||||||||||||||||||||
| データを数える関数は、「COUNTA」関数か「ROWS」関数を使用します。 | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| 手順2:実行中の情報を取得する | ||||||||||||||||||||||||||||
| ケース1では実行中回数のみ、メッセージの一部として、セルE12にリンク表示させていました。 | ||||||||||||||||||||||||||||
| 今回は、実行中の支店名を求め、メッセージに表示させます。 | ||||||||||||||||||||||||||||
| リストを元に、何回目(何行目)かの情報を求めるには「INDEX」関数を使います。 | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| !ポイント | ||||||||||||||||||||||||||||
| 支店名, 住所, ○○区分など、リストが複数項目ある場合、 | ||||||||||||||||||||||||||||
| 「INDEX( 範囲, 行番号, 列番号)」の指定で、他の項目列情報も取得できます。 | ||||||||||||||||||||||||||||
| リストの取得をStiLLボタンで行う場合、「出力範囲名」でリストに名前を付け、INDEX関数でその名前を参照するようにします。 | ||||||||||||||||||||||||||||
| 手順3:繰返しボタンの作成 | ||||||||||||||||||||||||||||
| 「繰返し」ボタンで、実行ボタン、繰り返す回数を参照するセル、回数出力するセルを指定します。 | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| ※ 他のボタン設定は、ケース1と同じなので、省略します。 | ||||||||||||||||||||||||||||
| !ポイント | ||||||||||||||||||||||||||||
| メッセージボタンに限らず、実行中の情報をセルに表示させ、他の機能のボタンから参照させることで、 | ||||||||||||||||||||||||||||
| 「支店名を保存ファイル名にする」、「現在選択中の支店でデータをさらにフィルタする」など、様々な変数処理が可能です。 | ||||||||||||||||||||||||||||
| ■ 参考 | ||||||||||||||||||||||||||||
| 「繰返し実行」ボタンは、実行中に「Ctrl」+「Break」などのキー操作で処理を中断することはできません。 | ||||||||||||||||||||||||||||
| 長時間PCが使えなくなる事が想定される場合は、処理を分割するか、あらかじめ注意メッセージを表示するなどでご配慮下さい。 | ||||||||||||||||||||||||||||
| 「繰返し実行」ボタンは、実行時に繰返し回数が確定しているプログラムです。(VBAのFor〜Nextタイプ) | ||||||||||||||||||||||||||||
| 実行中の条件で回数が変わる繰返し(Do〜Loop等)は、また次回以降に解説予定です。 | ||||||||||||||||||||||||||||
| 「INDEX」関数については、「Excelメールサービスバックナンバー」もご参考にしてください。 | ||||||||||||||||||||||||||||
| 【Excelメールサービス】 Excel情報027 関数--INDEX関数、コンボボックスの作り方 | ||||||||||||||||||||||||||||
| 以上 | ||||||||||||||||||||||||||||
| (各ボタンの設定内容の詳細はStiLLヘルプをご確認ください) | ||||||||||||||||||||||||||||
| Copyright(C) アイエルアイ総合研究所 無断転載を禁じます | ||||||||||||||||||||||||||||