• 締切済み

Access+VBです

メインフォーム側からサブフォームの並び替えや、検索するにはどう書けば良いのでしょうか? また、 [サブフォーム].Form![氏名].SetFocus と書いても、サブフォームの[氏名]にフォーカスされないのは、なぜですか? メイン側からサブ側へのアクセスの仕方がいまいち理解できません。

みんなの回答

  • bdr
  • ベストアンサー率43% (35/80)
回答No.1

[Forms]![メインフォーム名].[サブフォーム名]![氏名].SetFocus forms └メインフォーム名   └サブフォーム名(メインフォームのコントロールとして)    └コントロール名(サブフォームのコントロールとして) アクセスのバージョンによって若干記述が異なるようです

situmonnsya
質問者

補足

ありがとうございます。 良く調べたら  [サブフォーム名].Form![氏名].SetFocus でも、フォーカスされてました。 それで、メインからサブフォームを検索する時 DoCmd.FindRecord~~~には、どんな方法でするんでしょうか? [Forms]![メインフォーム名].[サブフォーム名]!DoCmd.FindRecord~~ なんて書くんでしょうか?

関連するQ&A

  • Access+VB サブフォーム(再度)

    表形式フォームで出来上がったものがあります。 Form_Openイベントには、DoCmd.FindRecordで検索をかけてます。 次に、新しくフォームを作りそれにタブコントロールを置き、その中に出来上がってある表形式フォームを置きました。 単体ではDoCmd.FindRecord検索かかってましたが、新しいフォームのサブフォームにするとできません。 そもそも、コントロールになりさがった、サブフォームにForm_Openイベントはあるんでしょうか? Form_GotFocusイベント(サブ側)は働かなくなってるし、サブフォームのイベントプロパテイにはフォーカスの取得時と喪失時しかありません。 メインから、サブフォームがOPENした時に検索かけるにはどうしたらよいでしょう?

  • ACCESS VBAサブフォーム(DATA SHEET)の値の取得方法

    いつもお世話になっております。 ACCESS VBAでメインフォームに貼りついているサブフォームの値をとりたいのですが、うまくいっていません。 現状は module1でaをPublicで宣言 サブフォーム中のFORM_CURRENT()中で me.field1.setfocus a = me.field1.value として取得しています。 (実装ではメインのほうのボタンAを押したときに サブフォーム、FORM_CURRENT()で取得しておいた値を 別の変数に入れようとしています。) サブフォームのみで実行するとうまくいくようですが、 メインフォームに貼り付けるとうまくいかないようです。 (メインフォームに貼り付けて、サブフォームのFORM_CURRENTにブレイクを 貼って止めようとするが止まらない) そこでメインフォームボタンAクリックイベントで dim a1 as integer Forms![mainform]![subform].form.[field1].setfocus a1 = Forms![mainform]![subform].form.[field1].value として値をとろうと思ったのですが メインフォームからサブフォームにフォーカスをうつせない? らしく、サポートされていませんの旨のメッセージがでてしまいます。 やりたいこととしては、メインフォームに貼りついたサブフォームの 選択レコードのフィールド値を、メインフォームのボタンを押したときに 取得する。ということなのですが、うまくいっていません。 別の方法でもいいので、実現方法をご存知の方、よろしくお願いします。 ちなみにACCESSは2000を使用、ADOはサポートされていますがDAOは 非サポートのようです。

  • 新規レコードへ移動しない

    Access2010を使用しています。 サブフォームからメインフォームの「登録」ボタンプロシージャをCallした時、メイン・サブフォーム共に新規レコードへ移動しなくて困っています。 具体的には、サブフォームにフォーカスがある時に「F12」を押すと画面の入力項目の内容刃そのままでメインフォームの「注文番号」テキストボックスにフォーカスが移動します。 メインフォームにフォーカスがあるか、マウスで「F12」をクリックすると画面の入力項目がクリアされて新規レコードへ移動します。 コードは以下の内容が記述してあります。 ーーーーーサブフォーム----- Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case 123 Call Me.Parent.Form_KeyDown(KeyCode, Shift) KeyCode = 0 End Select End Sub -----メインフォーム----- Public Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case 123 Call 登録_Click KeyCode = 0 End Select End Sub Private Sub 登録_Click() DoCmd.GoToRecord , , acNewRec Me.注文番号.SetFocus End Sub

  • タブコントロールを含んだフォームのスクロール位置

    フォームの中にタブコントロールを入れ、その中にさらにフォームを入れ込んであります。 タブをクリックすると、タブ内のフォームの中のサブフォームにフォーカスが行ってしまうので メインフォームの中にある「見積番号」のフィールドにフォーカスが行くように 下記のVBAを書いてみたのですが、うまくフォーカスが行きません。 何が原因なのでしょうか。 ---------------------------- Private Sub パターン1_Click() Forms!F_C_1_☆新規作成_パターン.SetFocus Forms!F_C_1_☆新規作成_パターン!見積番号.SetFocus End Sub

  • Access サブフォームにフィルターをかけるには?

    メインフォームの中にタブを置きその中に表形式のサブフォーム(SUB)を置いています。 メインにボタン(コマンド10)を置いて押されたらサブのFunction(test)に飛ぶようにしてます。 ----メイン----- Private Sub コマンド10_MouseDown(~~~ [SUB].SetFocus Debug.Print Me.SUB.Form.test End Sub -----サブ----- Public Function test() DoCmd.ApplyFilter , "氏名=" & data End Function として、サブフォームにフィルターをかけたいのですが、エラーになります。 サブ単体では、動くのですが。

  • Access メインフォーム サブフォームにて

    お世話になります。 Accessにて メインフォームにコマンドボタンを置いて、クリックするとサブフォームのレコードが 次に行くようにしたいのですが、 コマンドボタン クリック Forms![メインフォーム]![サブフォーム名].Form!フィールド名.SetFocus DoCmd.GoToRecord , , acNext メインフォームとサブフォームのレコードが次に行ってしまいます。 サブフォームだけ次のレコードに行くには、どのようにすれば良いのでしょうか。 分かる方教えて下さい。 宜しくお願いします。

  • Accessサブフォームのレコード移動

    Accessにおいて、サブフォームのレコードの移動方法をどなたか教えてもらえませんか。「Forms![メインフォーム名]![サブフォーム名].Form.SetFocus DoCmd.GoToRecord acDataForm, "サブフォーム名", acNext」とコーディングしたのですがダメでした。よろしくお願い致します。

  • どこにもフォーカスを当てたくない

    フォームを開いたとき、どこにもフォーカスを当てたくないです。 アクセス2003です。 フォームにテキストボックスを1つ設置して、そのフォームを開くと フォーカスがテキストボックス上で、点滅しますが どこにもフォーカスを当てない方法あるのでしょうか? Private Sub Form_Open(Cancel As Integer) Me.詳細.SetFocus End Sub とするとコンパイルエラーになってしまいます。 不可能でしょうか?よろしくお願い致します。

  • ACCESSで条件によってサブフォームを非表示に

    Accessの初心者です。よろしくお願いします。 Accessで住所録を作っています。 メインフォームは主に本人のデータを表示し、サブフォームで家族の データを表示するようにしました。 その時、家族がいない人についてはサブフォーム自体を表示しないようにしたいと思います。 そこで下記のようにしましたがうまくいきませんでした。 (1)サブフォーム内で家族の人数をカウントする。 (2)このカウント結果をメインフォームに表示する。(メインフォーム にテキストボックスを配置し、コントロールソースをサブフォームの 人数カウントにする。)     ここまではうまくいきました。 (3)ここでメインフォームのイベントの「開くとき」に以下のように記 述しました。(メインフォームのテキストボックスにカウントという  名前をつけました。) Private Sub Form_Open(Cancel As Integer) If Me!カウント = 0 Then サブフォーム.Visible = False Else サブフォーム.Visible = True End If End Sub この記述の仕方がまずいと思うのですが、どのようにすればよいか 分りません。よろしくお願いします。

  • サブフォームの並べ替えをしたい

    どうしても出来ないのでお知恵をお貸しください。 【1】「オートフォーム:データーシート」で、テーブル1を紐付けて、 子フォームを作成しました。 【2】「デザインビュー」で親フォームを作り、 その子フォームをドロップアンドドラッグしてサブフォームにしました。 【3】親フォームにコマンドボタンを一つ設置しました。 (図参照) 【4】コマンドボタンのイベントプロシージャーに Private Sub コマンド1_Click() Forms("親").Controls("子").Controls("入金").SetFocus DoCmd.RunCommand acCmdSortAscending '昇順並べ替え End Sub とコードを書きました。 そして、親フォームを開き、コマンドボタンを押すと、 実行時エラー2046 「コマンドアクション"昇順で並べ替え" は無効です」 となってしまいます。 しかし、図のように 子フォームのデータシート上のどれかの値にフォーカスがある状態で 標準モジュールに書き写した Sub test1() Forms("親").Controls("子").Controls("取引日").SetFocus DoCmd.RunCommand acCmdSortAscending '昇順並べ替え End Sub を実行すると 問題なく並び替えがされます。 RunCommand を使わなくてもいいので 「コマンドボタンを押したら、サブフォームの並び替えをする」には どうすればいいのでしょうか。 ご教授よろしくお願い致します。(アクセス2003)