サブフォームが多重になっている場合に、サブフォームのサブフォームのテキストボックスを他のフォームから参照する方法をご紹介します。
(サブフォームのサブフォームのテキストボックスなんて書いてるとアホみたいですね…)
このページでは、以下のようなフォームの構成になっている場合に、”txt_テキストボックス1″と”txt_テキストボックス2″に”代入”という値を代入する方法を例にとって説明します。
┌─────────────────
│frm_メインフォーム
│┌────────────────
││fsub_サブフォーム1
││
││ txt_テキストボックス1
││
││┌───────────────
│││fsub_サブフォーム2
│││
│││ txt_テキストボックス2
│││
││└───────────────
│└────────────────
└─────────────────

画像にするとこんな感じです。
他のフォームからサブフォーム内のテキストボックスを参照する方法
まずは、他のフォームからサブフォーム内のテキストボックスを参照する方法をご紹介します。
例でいうと、[txt_テキストボックス1]を参照する方法になります。
他のフォームからは下記のように代入します。
Forms![frm_メインフォーム]![fsub_サブフォーム1].Form!txt_テキストボックス1 = “代入”
他のフォームからサブフォームのサブフォームのテキストボックスを参照する方法
続いて、他のフォームからサブフォームのサブフォームのテキストボックスを参照する方法のご紹介です。
例でいうと、[txt_テキストボックス2]を参照する方法ですね。
他のフォームからは下記のように代入します。
Forms![frm_メインフォーム]![fsub_サブフォーム1].Form![fsub_サブフォーム2].Form!txt_テキストボックス2 = “代入”
まとめ
[fsub_サブフォーム1].Form とすることで、サブフォームそのものにアクセスすることができます。そして、[fsub_サブフォーム1].Form![fsub_サブフォーム2].Formとすることで、[fsub_サブフォーム1]の[fsub_サブフォーム2]にアクセスすることになります。
これを利用すれば、サブフォームが二重・三重の多重構造になっていても対応が可能です。
ただ、サブフォームがあまりに多重化すると、複雑になってしまうので、出来るだけシンプルに作るべきかなと思います。