親フォームからの子フォームに値を渡す方法です。
例
下記は、親フォーム上のテキストボックスに入力した値を、子フォームに渡す例です。まず、親フォームにテキストボックス(textName)とボタン(buttonOpen)を配置します。
次に、子フォームにも同じようにテキストボックス(textName)とボタン(buttonExit)、あとラベルを配置します。
そして、それぞれのイベントプロシージャに次のように記述します。
親フォーム
Private Sub buttonOpen_Click() Dim args As String If IsNull(Me.textName.Value) = False Then args = Me.textName.Value End If DoCmd.OpenForm "子フォーム", acNormal, , , , acDialog, args End Sub
子フォーム
Private Sub Form_Load() If IsNull(Me.OpenArgs) = False Then Me.textName.Value = Me.OpenArgs End If End Sub
Private Sub buttonExit_Click() DoCmd.Close acForm, Me.Name End Sub
では実行してみます。
まず、親フォームを開き、テキストボックスに値を入力します。
入力できたら「開く」ボタンをクリックします。
すると、このように子フォームのテキストボックスに親フォームで入力した値が表示されます。
解説
親フォームで、DoCmd.OpenFormの7番目の引数に指定した値は子フォームのOpenArgsプロパティで取得することが出来ます。注意としては、引数に値を指定しないとOpenArgsにはNullが入ってきますので、IsNull関数でチェックする必要があります。AccessではこのOpenArgsを利用して、親フォームからレコードIDを子フォームに渡して、子フォーム上でそのIDの詳細データを表示するといったことをよくします。ぜひ覚えておいてください。
スポンサーリンク