質問の修正ありがとうございます。
まだ、不明な点はありますが概要はつかめました。
まず、今回のような要件の場合、分割フォームは使いづらいと思います。
メインフォーム上にデータシートビューをサブフォームとして埋め込んだ方がいろいろ融通が利くと思います。
例えば分割フォームだと単票フォームの方に非連結のテキストボックス(検索用)を配置するとそれも表示されてしまいますが、メイン/サブフォーム形式だとそのようことはありません。
検索用テキストボックスをフォームヘッダーに配置する形にすれば分割フォームでもデータシート側にそれが表示されることはなくなります。ただし、
検索用テキストボックスと修正用テキストボックスのレイアウトが上下になるので質問で提示のレイアウトに拘るなら分割フォームは無理です。
メイン/サブフォーム形式で行くか、分割フォームて検索テキストボックスはフォームヘッダーに配置するか、どちらにするかまずは決めてください。それが決まったらそれに沿って回答したいと思います。
メイン/サブフォーム形式で行きたいとのコメントがありましたので、それで回答します。
まず、テーブルをレコードソースとする単票フォームを作成します。詳細セクションに、検索用テキストボックス(非連結)とフィールドと連結したテキストボックスを配置します。
あるいは、現状の分割フォームの「既定のビュー」を「単票フォーム」にしてもいいです。デザインを変更しないのならその方か早いですね。
同じテーブルをレコードソースとするデータシート形式のフォームを作成します。(フォームウィザードで簡単に作成できます。)保存して閉じます。
前記の単票フォームをデザインビューで開いて、上記のデータシート形式フォームを詳細セクションにドロップします。これでサブフォームとして埋め込まれます。
サブフォームコントロールの「リンク親フィールド」「リンク子フィールド」が自動で設定される場合がありますので、設定されていたら削除します。
サブフォームコントロールの幅をメインフォームの幅一杯に広げます。また、サブフォームコントロールの下に隙間がないように詳細セクションの高さを縮小します。
サブフォームコントロールの「水平アンカー」「垂直アンカー」をどちらも「両方」に設定します。
これで見た目は分割フォームとほぼ同じになります。
あとは検索用コマンドボタンを配置します。名前は、btn_fix_2 とします。
(標題は「検索」より「抽出」の方がやりたい処理を的確に表していると思います。)
あとは抽出解除用のコマンドボタンも配置します。名前は cmd_Filter_Clear とします。
フォームモジュールのコードを下記のように記述します。
vba
1Option Compare Database
2Option Explicit
3
4Private Sub Form_Open(Cancel As Integer)
5 Set Me.SF1.Form.Recordset = Me.Recordset
6End Sub
7
8Private Sub btn_fix_2_Click()
9 Dim strFilter As String
10 If Me.txtF1 <> "" Then
11 strFilter = strFilter & " And F1 Like '*" & Me.txtF1 & "*'"
12 End If
13 If Me.txtF2 <> "" Then
14 strFilter = strFilter & " And F2 Like '*" & Me.txtF2 & "*'"
15 End If
16 If Me.txtF3 <> "" Then
17 strFilter = strFilter & " And F3 Like '*" & Me.txtF3 & "*'"
18 End If
19 Me.Filter = Mid(strFilter, 5)
20 Me.FilterOn = strFilter <> ""
21 Set Me.SF1.Form.Recordset = Me.Recordset
22End Sub
23
24Private Sub cmd_Filter_Clear_Click()
25 Me.txtF1 = ""
26 Me.txtF2 = ""
27 Me.txtF3 = ""
28 Me.Filter = ""
29 Me.FilterOn = False
30 Set Me.SF1.Form.Recordset = Me.Recordset
31End Sub
サブフォームコントロール名 SF1
テーブルのフィールド名 F1, F2, F3
検索用テキストボックス名 txtF1, txtF2, txtF3
と仮定したコードですので、実際の名前に合わせ変更してください。