#739 | サブフォームのイベントでメインフォームがすでに開いているか調べる | フォーム、VBA | |||||
メイン/サブフォーム形式のフォームでは、デザインビューも含めて、メインフォーム側だけを開けばサブフォームもいっしょに開かれます。しかしフォームビューで開くときのイベントの発生順はそのイメージと異なり、次のような順番でイベントが発生します。
その例としてまず次のようなイベントプロシージャをそれぞれ用意します。 ■メインフォーム側 Public pvarData As Variant Private Sub Form_Load() 'メインフォームの読み込み時 '変数に値を代入 pvarData = "12345678" End Sub Private Sub Form_Current() 'サブフォームのレコード移動時 'メインフォームの変数の値を表示 MsgBox Parent.pvarData End Sub この状態で、メインフォームを開くと次のようなメッセージが表示されます。
このように、最初のサブフォーム側のイベント発生時にはまだ変数値が空の状態になっていることが分かります。 そこで、サブフォーム側のイベントプロシージャを次のように書き換えてみます。 Private Sub Form_Current() 'サブフォームのレコード移動時 If Parent.Visible Then 'メインフォームのForm_Loadイベントが既に発生済みのとき 'メインフォームの変数の値を表示 MsgBox Parent.pvarData End If End Sub つまり、サブフォームのイベントプロシージャ内において、メインフォームがすでに開いているかどうかは『Parent.Visible』というメインフォームのプロパティ値(”メインフォームが可視状態になっているかどうかの真偽)で判断できます。 |
|||||||
|
Copyright © T'sWare All rights reserved |