フォーム、VBAよくある画面のフローとして、画面のボタンをクリックしたらまずダイアログを表示し、そこでの入力値や選択肢に応じてそのあとの処理を切り替えるということがよくあります。その際、一連の後処理もダイアログ側のモジュールに記述する方法がシンプルなのですが、一方で、呼び出し元フォームとダイアログ側とでデータをやり取りして、ダイアログ側の操作結果を呼び出し元で取得、呼び出し元のモジュールで後処理を行うということもあります。ダイアログは単に処理内容などを選択するためだけに使う方法です。そのようなケースにおいて、ダイアログでどのような操作が行われたか、たとえばテキストボックスにどのような値が入力されたか、オプショングループでどのオプションボタンが選択されたか、あるいは実行を指示する[OK]ボタンがクリックされたのか中止を指示する[キャンセル]ボタンがクリックされたのかなどの操作結果を呼び出し元フォームに返す方法を説明します。ここでは、『呼び出し元のフォームモジュールの「Declarationsセクションで宣言されたPublic変数」を使う方法』について説明します。例として次のような2つのフォームを使うものとします。■呼び出し元のフォームデザイン■ダイアログのフォームデザイン呼び出し元フォームでボタンをクリックしたらダイアログを表示します。ダイアログ側ではテキストボックスに数値を入力したあと[OK]ボタンをクリックするか、[キャンセル]ボタンをクリックします。ダイアログでの操作結果をテキストボックスに表示します。プログラムとしては、呼び出し元/ダイアログのフォームモジュール、および標準モジュールに次のようなコードを記述します。Subこれらのプログラムの構造は次のようなイメージになっています。呼び出し元では、引数に「acDialog」を指定することで”ダイアログサンプル3”フォームを”ダイアログ”として開きます。実行時、呼び出し元のプログラムはダイアログが閉じられるまでここで一時停止します。ダイアログ側でデータ入力やボタン操作が行われたら、その結果を呼び出し元のDeclarationsセクションの変数に代入します。これらはPublicで宣言することで、他のフォームモジュールからも値を”代入”することができます。ダイアログ側では[OK]か[キャンセル]ボタンがクリックされたらこのフォームを閉じます。ダイアログが閉じられることで、いったん停止した呼び出し元のプログラムが再開されます。呼び出し元では”自身のモジュールのPublic変数”を参照することで、ダイアログでの入力・選択値やボタン操作結果などを取得し、それに応じて後処理を実行します。※このPublic変数に代入された値は呼び出し元フォームが開いている間、保持され続けます。フォームを開いたまま再度ダイアログ呼び出しが実行される可能性もあるため、ダイアログを開く前に初期化しておくと確実です。|この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。