本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

ダイナミックダイアログボックス

文書番号: 410594

最終更新日: 1998/02/05


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP410594

概要

Excel 4.0 ではダイナミックダイアログボックスを作成することが可能です。ダイ
ナミックダイアログボックスを利用すると、ユーザーが選択した項目に応じて、
それに関連した別の項目を自動的に更新することが可能です。ダイナミックダイア
ログボックスを使うには、トリガーとして働くダイアログボックス項目を定義し、
これらの項目が選択されたときにボックスを表示あるいは非表示にするマクロ
コードを作成する必要があります。

どんなときにダイナミックダイアログボックスを使用するのか?

画面上からダイアログボックスを消さないでユーザーのアクションに応答したい
ときにダイナミックダイアログボックスを使います。たとえば、[他] - [作業状
態設定] コマンドを選択したとき現れる作業状態設定ダイアログボックスがこれ
にあたります。このダイアログボックスでは、[桁数] チェックボックスを選択
すると、それに応じて [入力単位] テキストボックスが選択可能になります。
[GRAPHIC: ]

ダイナミックカスタムダイアログボックスの作成

ダイナミックカスタムダイアログボックスを作成するには、通常のダイアログ
ボックスのためにダイアログ定義テーブルを作成するのと基本的には同じ方法
です。トリガーとして働かせる項目を定義することによって、ダイアログボック
スをダイナミック化することができます。これは、指定項目の項目タイプ番
号 (定義テーブルの一列目) に 100 を加えることによって行います。たとえば、
リストボックス項目をトリガーにするには、項目タイプ番号の 15 に 100 を加
えて 115 に変えてください。(注.ダイアログエディタでもトリガーとして項目
を設定することができます。)
以下の項目を除く、すべてのダイアログボックス項目がトリガーとして利用する
ことができます。
  • 文字(項目 5 )
  • 編集ボックス(項目 6 ~ 10 , 22 )
  • グループボックス(項目 14 )
  • アイコン(項目 17 )
  • ディレクトリ文字列(項目 20 )
  • ヘルプボタン(項目 24 )
ダイアログボックス中において、選択可能なオプションと選択不可能 (淡色表 示) なオプションを作成することもできます。これにより、ユーザーが関連し
た項目を選択するまで、あるダイアログボックスの項目を選択不可能にすること
ができます。ダイアログボックス項目を選択不可能にするためには、項目番号に
200 を足してください。たとえば、オプションボタン (項目番号 12) を選択不
可能にするには、ダイアログボックス定義テーブルの項目番号列に 212 を指定
してください。

トリガー項目が選択されたことを決定する

ダイナミックダイアログボックスと通常のダイアログボックスの一番大きな違い
は、ダイアログボックスを画面上に残したまま、マクロを実行することが可能で
あるということです。これは、マクロがダイアログボックス定義テーブルを変更
して、ダイアログボックスを変更するコマンドを実行させることにより実現でき
ます。これらの変更は、ユーザーが選択したトリガー項目に応じて行い、ダイ
アログボックスを再表示したときにその変更をダイアログボックスに反映します。
トリガー項目が選択されると、画面にダイアログボックスを残したままマクロに
制御を戻します。ダイアログボックスの項目は、ダイアログボックス定義テーブ
ルの一行目から 0,1,2,・・・ というように番号が付けられます。この番号は
DIALOG.BOX 関数によって返され、ダイアログボックスの中でどの項目が選択
されたのかを決定するために利用されます。(ただし、取消ボタンだけは
DIALOG.BOX 関数に常に FALSE を返します。)  これを利用することにより、
マクロコードがダイアログボックスを再表示する前にその定義テーブルを変更す
ることが可能です。

マクロ構造

以下に典型的なダイナミックダイアログボックスのマクロ構造の基本フォー
マットを示します。
  DIALOG.BOX 初期設定
  WHILE Loop
                          DIALOG.BOX の呼び出し
                          DIALOG.BOX 定義テーブルの変更
  NEXT
DIALOG.BOX の初期設定では、ダイアログボックスを表示するための初期状態を
決定します。ここでは、テキストエディットボックス内の既定値や、項目の淡色
表示化、または編集可能な項目の消去を行います。それは、ダイアログボックス
定義テーブル内のセルを編集することによって変更します。一列目の項目タイプ
番号の変更、および種々の編集可能な項目に値を設定又は消去して、既定値を変
更します。
WHILE ループ構造内を用いて、トリガー項目を選択したときに、マクロを実行し
てダイアログボックスを再表示します。WHILE ループの終了条件には、ユーザー
によって行われた選択を反映します。たとえば、 DIALOG.BOX 関数によって返
される特定の値に応じて WHILE 関数を抜け出すことが可能です。

ダイアログボックスの定義テーブルに変更を加えるときの留意点

ダイアログボックスの定義テーブルに変更を加えるときは以下のことを考慮
してください。
  • 定義テーブルで選択可能または選択不可能を設定するには、実際に項目番号 から 200 を加減するよりもむしろ、SET.VALUE コマンドを使用する方が良い でしょう。これは、もし同じトリガー項目を 2 回選択したとき、200 を項目 番号から 2 回加減するという問題を避けるためです。
  • 更新の過程をユーザーに見えないようにするには、同じダイアログボックス 定義テーブルか、同次元のダイアログボックス定義テーブルを呼び出して ください。
  • ダイナミックダイアログボックスが呼び出されるときに、ECHO(FALSE) を 使うと、再描画に異常をきたす恐れがあります。
  • ダイナミックダイアログボックスは、できる限り数式バーとステータスバー の内側に表示させるように設計してください。再描画がスムーズに行えます。

実用例

この実用例は、単独でも利用することが可能です。マクロシートに実際に入力
して、試してみてください。ダイナミックダイアログボックスのメカニズムを
より理解していただくには、ステップ実行でマクロを実行していただくと良い
でしょう。[マクロ] - [実行] コマンドで <ステップ> ボタンを選択すること によってステップ実行を行うことが可能です。
この例では、顧客からの送り状を管理するダイナミックダイアログボックスを
作成します。ユーザーが住所の変更を指定したら、新しい住所の指定を入力
できるようになります。もしこのオプションがダイアログボックスで選択されて
いなければ、この項目は不必要なフィールドであるため、淡色表示になります。
次の表は、このマクロで使用するダイアログボックス定義テーブルです。
[GRAPHIC: ]
この定義テーブルを入力した後、E2:K16 を反転表示し、[式] - [名前定義] コ
マンドを選択してください。この例では定義テーブルの名前に "box" が定義し てあります。定義テーブルに名前を定義しておくと、マクロを書くときにその参
照が容易になります。
8 行目の項目はこのダイアログボックスではトリガーになっていることに注意し
てください。9 ~ 12 行目の項目は選択不可能(または淡色表示)になってい
ます。このダイアログボックスが初期状態で実行されているとき、以下のように
画面に表示されます。
[GRAPHIC: ]
もし、[住所変更] チェックボックスを選択すると、ダイアログボックスが画面
に残ったまま、マクロの実行が継続されます。マクロは、トリガーが選択されて
いることを確認し、その選択に基づいてタスクを実行して、ダイアログボックス
が再描画されるかどうかチェックします。以下にこのマクロ例を示します。
[GRAPHIC: ]

説明

  • A2: 既定値ダイアログボックスセクションに項目 4 ,送付番号テキストボックス をセットします。
  • A3: FALSE で終了した変数をセットします。この変数は <入力> コマンドボタンが 選択されたときに使われます。
  • A4: WHILE ループの開始。入力コマンドボタン (Finished=TRUE) が押されるまで 続きます。
  • A5: もし住所変更チェックボックスが選択されていなければ、新住所フィールド が淡色表示になります。
  • A6: ダイナミックダイアログボックスを実行します。
  • A7: <取消> コマンドボタンが押されているかどうかチェックし、もし TRUE なら ばマクロがストップします。(BREAK をここに書いても、WHILE ループの外に ブレークし、マクロの残りを継続します。)
  • A8-A10: もし 8 行目のトリガー項目(つまり、住所変更チェックボックス)が選択さ れていれば、テキストフィールドとテキストボックス 9 ~ 12 行目の項目が 項目番号から 200 を引かれて、選択(利用可能)されます。また、既定値の ダイアログボックスセクションが 12 行目の項目にセットされます。
  • A11-A12: もし <入力> ボタンが選択されたら、変数 Finished が TRUE にセットされます。
  • A13: ネストされた IF ステートメントの終わり。
  • A14: WHILE ループの終わり。Finished が TRUE ではない間、ループの開始に戻ります。
  • A15: マクロの終わり (マクロはこの地点で継続されてダイアログボックスに入力 された情報を処理します)。

関連情報

カスタムダイアログボックスの作成については、『機能事典 (マクロ編) 』の 54
ページ以降をご参照ください。
ダイナミックダイアログボックスの作成については、『機能事典 (マクロ編) 』の
61 ページ以降をご参照ください。

Keywords: KB410594
Technology: kbExcel400 kbExcelSearch kbExcelWinSearch

inserted by FC2 system