• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access VBA コントロールの参照が上手く行かない)

Access VBAコントロールの参照が上手く行かない

このQ&Aのポイント
  • SF得意先課のコントロールが思うように動作しない
  • F得意先登録フォームのレコード移動時にエラーメッセージが表示される
  • 解決策を教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.4

>Debug.Print TypeName(Forms![F得意先登録]![SF得意先課].Form) >で止まります。 色々試してみましたが、同じエラーが再現できませんでした。 ひょっとしてAccess95ですか?こんな情報ありました。 http://support.microsoft.com/kb/403715/ja ちょっと、視点を変えて、別の手法で・・・ 親フォーム Private Sub Form_Current()  Me!txt得意先件数 = Me.CurrentRecord & "/" & DCount("*", "T得意先") End Sub サブフォーム Private Sub Form_Current()  Me![txt得意先課件数] = Me.CurrentRecord & "/" & DCount("*", "T得意先課", "L得意先CD=" & Forms![F得意先登録]![得意先CD])  Me![cmb課CD].Requery End Sub こんな感じで、サブフォームにプログラムを移動させるとどうなります? 補足: DCountを使っているのは、エラー対策とは別件です。 RecordCountは、レコードセットを最後まで読み込まないと正しい値にならない場合があります。 「RecordCountでレコード数が取得できる」と言うのはよくある間違いなのでご注意ください。 RecordCountでレコード数を調べる場合は、事前にMoveLastなどで、最後のレコードまでアクセスしておく必要があります。

Harmaiony
質問者

お礼

感謝々です。 本当に有難うございました。 まだまだ初心者ですが、これからもお時間の許す範囲でご指導下さい。 どうぞよろしくお願いいたします。

Harmaiony
質問者

補足

venzou様、本当に本当に有難うございました。 補足のご指摘でもしやと思うところがありました。 親フォームではOpenイベントに ----------------- Private Sub Form_Open(Cancel As Integer) '件数取得の前処理とコンボの値クリア Me.Recordset.MoveLast Me.Recordset.MoveFirst cmb得意先.Value = Null End Sub --------------- を記述してあります。 そして得意先が変わってたら、 サブフォームの数表示のテキストボックスと 検索コンボの値の更新をさせたくて レコードの移動時イベントで --------------- Me!txt得意先件数 = Me.CurrentRecord & "/" & Me.Recordset.RecordCount の下に質問のコードを記述しましたが、 上手くいきませんでした。 venzou様ご教授の記述に変更したところ、上手く行きました。 とても嬉しいです。続く・・・御礼コメント

その他の回答 (3)

  • venzou
  • ベストアンサー率71% (311/435)
回答No.3

テーブルとフォームを作って検証してみましたが、 こちらではエラーは出ませんでした。(Access2000) 原因を絞り込むために、下記を実行してみてください。 親フォーム(F得意先登録)のレコード移動時イベント Private Sub Form_Current()  Debug.Print TypeName(Forms![F得意先登録])  Debug.Print TypeName(Forms![F得意先登録]![SF得意先課])  Debug.Print TypeName(Forms![F得意先登録]![SF得意先課].Form)  Debug.Print TypeName(Forms![F得意先登録]![SF得意先課].Form.CurrentRecord)  Debug.Print TypeName(Forms![F得意先登録]![SF得意先課].Form.Recordset.RecordCount)  Debug.Print TypeName(Forms![F得意先登録]![SF得意先課]![cmb課CD])  Debug.Print TypeName(Forms![F得意先登録]![SF得意先課]![txt得意先課件数]) End Sub 正常ならイミディエイトウインドウに下記の様に表示されると思います。 Form_F得意先登録 SubForm Form_SF得意先課 Long Long Combobox Textbox 内容が違ったり、エラーなど出れば、補足してください。 あと別の原因として、データベースの破損を疑った方が良いかも知れません。 バックアップをとった後、最適化/修復や、新規のデータベースに内容をインポートして移す、など、破損対策を試してみて下さい。

Harmaiony
質問者

補足

venzou様、 何度も質問にお付き合い下さり、また検証して頂いて大変感謝しております。 ご教授のコードを流して見た所、 Debug.Print TypeName(Forms![F得意先登録]![SF得意先課].Form) で止まります。 「実行時エラー2455 指定した式にForm/Reportプロパティに対する正しくない参照が含まれます」となります。 イミディエイトウィンドウには SubForm Form_F得意先登録 のみ表示されます。 親「F得意先登録」を開きプロパティ画面を検証、名前は「SF得意先課」になっています。 データベースの最適化・修復も行いました。 新規のデータベースに内容をインポートして移しても結果は同じです。 何度もすみませんが、後はどこを調べて修正すればよいかご指導よろしくお願い致します。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

>Formがもう一つ必要なのは、Dlookup関数などの中に参照式として記述する場合だと参考サイトに書いてありました。 仰るとおり、不要な場合もあるようですね。 (私は全て必要だと勘違いしてました。) しかし、 >Forms![F得意先登録]![SF得意先課].CurrentRecord Forms![F得意先登録]![SF得意先課].Form.CurrentRecord >Forms![F得意先登録]![SF得意先課].Recordset.RecordCount Forms![F得意先登録]![SF得意先課].Form.Recordset.RecordCount ここには必要みたいですよ。これで試してみてください。

Harmaiony
質問者

補足

venzou様、度々のアドバイスを有難うございます。 ご教授の通り、以下の記述に修正しましたが、End Subまで進むものの、、「実行時エラー2455 指定した式にForm/Reportプロパティに対する正しくない参照が含まれます」となり、フォームを開けません。 ---------------------------- Forms![F得意先登録].[SF得意先課].[txt得意先課件数] = _ Forms![F得意先登録]![SF得意先課].Form.CurrentRecord & "/" & Forms![F得意先登録]![SF得意先課].Form.Recordset.RecordCount ----------------------------- また、コンボの値更新の方は ---------------------------- Forms![F得意先登録].[SF得意先課].[cmb課CD].Requery ---------------------------- としたところ依然、「実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません」のままです。 コントロール名の前に、.form.としても同じ結果です。 何度も申し訳ありませんが、助けて下さい。 プロパティ等再確認する点があれば、そちらもご指摘下さい。 また、これをご覧になっている皆様でアドバイスがあればよろしくお願い致します。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

サブフォーム内のコントロールを参照する場合は Forms![F得意先登録]![SF得意先課].Form![txt得意先課件数] こんな感じで、Form が必要だと思います。 とりあえず、これを修正してみてください。何箇所かあります。

Harmaiony
質問者

お礼

お世話になります。 ---------------------------- Forms![F得意先登録]![SF得意先課].Form![txt得意先課件数] = Forms![F得意先登録]![SF得意先課].CurrentRecord & "/" & Forms![F得意先登録]![SF得意先課].Recordset.RecordCount Forms![F得意先登録]![SF得意先課].Form![cmb課CD].Requery ------------------------------- でも結果は変わりません。 Formがもう一つ必要なのは、Dlookup関数などの中に参照式として記述する場合だと参考サイトに書いてありました。 他の原因のようですが、ご教授いただけますか?

Harmaiony
質問者

補足

早速の回答を有難うございます。 修正してみます。検証後、改めてお返事書かせて頂きます。