- 締切済み
AccessVBAについてなのですが
質問なのですが、フォームを2枚開いていて、片方ののボタンクリックイベントからもう1枚のフォームのForm_Loadイベントを実行させたいのですがどうやればよいのでしょうか?実行させたいフォームを閉じてからもう一度開けばいいのですが、フォームを開いたままForm_Loadイベントを起こさせたいのです。Formsコレクションでどうにかやろうと思っているのですが、どうにもならなくなってしまいました。 困っていますのでよろしくお願いいたします
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yoisho
- ベストアンサー率64% (331/516)
selemityさんがおっしゃるのが素直やり方だとは思いますが、もし何かの理由で、どうしてもフォームモジュールで Form_Load を実行させる必要があるのでしたら、こんな方法もあります。 別のフォームモジュールのプロシージャを実行させる場合は、以下のように記述します。 Call Form_フォーム名.プロシージャ名 ただし、実行させる対象は Public プロシージャでなければなりません。 ということで、Form_Load プロシージャは Private ですので、これを Public Sub Form_Load() と書き直してやれば、他のフォームモジュールからでも実行できると思います。 もっとも、かってに Public に書き換えても他に問題が生じないか、(多分大丈夫のような気はしますが、)私には自身を持ってお答えできません。 そこで、安全を見るなら、Loadイベントを実行させるフォームに Form_Load を呼び出す Public プロシージャを作って、これを経由してイベントを実行させてはいかがでしょうか? 具体的には、 ボタンクリックイベントを行うフォームモジュールのプロシージャの記述 Call Form_フォーム名. Call_Form_Load (ただし「Call_Form_Load」は、経由させるプロシージャの名前ですので、好みでつけてください。) Loadイベントを実行させるフォームモジュールのプロシージャの記述 Public Sub Call_Form_Load () Call Form_Load End Sub
- selenity
- ベストアンサー率41% (324/772)
Accessの「モジュール」で記述してあるなら簡単です。 まず、Form_Load()内の記述を、標準モジュール内の関数として作成すれば、どちらのフォームからも簡単に参照できます。