- ベストアンサー
アクセス2003のサブフォームコントロールの参照について
アクセス2003で質問です。 メインフォームM1 サブフォームS1 サブフォームコントロールSCTL1 S1のフィールド T1と定義している場合に T1へサブフォームS1からオープンした別のフォームF1の値を代入したいのです。 マクロで値の代入の式を アイテムに [Forms]![M1]![SCTL1]![T1] と記述してもプロパティまたはメソッドが正しくないというエラーが表示されます。 同じ記述でアクセス2000では出来ました。 どこが違うのか教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
今の状況でもできると思いますが、何故なんでしょうか。 わかりませんが、 サブフォームコントロール「SCTL1」のソースオブジェクトはどうなってますか。 ソースオブジェクトがフォーム名「S1」になっているのなら、 正式には [Forms]![M1]![SCTL1].Form![T1] になるのですが、 ソースオブジェクトが、テーブルやクエリの場合は、 [Forms]![M1]![SCTL1]![T1] でアクセスできます。 [Forms]![M1]![SCTL1]![T1] でもフォームにアクセスできるので、 共通の書き方ということで、私は [Forms]![M1]![SCTL1]![T1] を覚えていました。 今実際に、2003/2007 で確認しても動きは大丈夫でした。 (フォームF1の方からT1へ値を代入するマクロは) フォームM1をデザインビューで開いた後、 フォームF1でそのアイテムを指定する時、マクロ内式ビルダで、 フォーム→読み込まれたフォーム→M1→S1 と辿った時に、 真中に表示されるものに、「T1」はありますか。 あったら、T1をクリックし、貼り付けすると、 [Forms]![M1]![SCTL1].Form![T1] に置き換わります。 辿る時には、ソースオブジェクト名が表示されるようです。 (貼り付けると、その部分がコントロール名に置き換わるようです) T1が真中にあるのであれば、Form と同列に書けるということになると思いますので、 [Forms]![M1]![SCTL1]![T1] でもよいように思います。 (同列に <フォーム> があるので) 今一度、式ビルダを使って確認されてみてはいかがでしょうか。 もしくは、アイテムではなく、式の方がおかしいということはありませんか。 なお、確認したバージョンは XPPRO SP3 + Access 2003 (11,8166,8221) SP3 です (最近は Update していませんが) また、2003で新規にちっちゃい環境作って、設定してみてどうなりますか。
その他の回答 (1)
- gunkan2009
- ベストアンサー率50% (2/4)
たぶんサブフォームの名前が違っていると思います。 サブフォーム自体のフォーム名ではなく、 メインフォームに貼り付けられたサブフォームの名前です。
お礼
メインフォーム、サブフォームをデザインビューで開いて、 マクロの式ビルダで、組み込まれたフォームからフィールドT1を 参照して式を作ったら思う通りに出来ました。 (確かにサブフォーム名がコントロール名に変わりました。) どうも有り難うございました。