
親フォームからの子フォームに値を渡す方法です。
例
下記は、親フォーム上のテキストボックスに入力した値を、子フォームに渡す例です。
まず、親フォームにテキストボックス(textName)とボタン(buttonOpen)を配置します。

次に、子フォームにも同じようにテキストボックス(textName)とボタン(buttonExit)、あとラベルを配置します。
そして、それぞれのイベントプロシージャに次のように記述します。
親フォーム
1 2 3 4 5 6 7 8 9 10 11 | 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 |
子フォーム
1 2 3 4 5 6 7 8 9 | Private Sub Form_Load() If IsNull( Me .OpenArgs) = False Then Me .textName.Value = Me .OpenArgs End If End Sub |
1 2 3 4 5 | Private Sub buttonExit_Click() DoCmd.Close acForm, Me .Name End Sub |
では実行してみます。

まず、親フォームを開き、テキストボックスに値を入力します。
入力できたら「開く」ボタンをクリックします。

すると、このように子フォームのテキストボックスに親フォームで入力した値が表示されます。
解説
親フォームで、DoCmd.OpenFormの7番目の引数に指定した値は子フォームのOpenArgsプロパティで取得することが出来ます。注意としては、引数に値を指定しないとOpenArgsにはNullが入ってきますので、IsNull関数でチェックする必要があります。AccessではこのOpenArgsを利用して、親フォームからレコードIDを子フォームに渡して、子フォーム上でそのIDの詳細データを表示するといったことをよくします。ぜひ覚えておいてください。
スポンサーリンク