概要
| この記事の結論 Accessのフォームフィルターは、フォームやデータシートの複数項目に条件を入力して、該当するレコードだけを表示する機能です。[ホーム]→[詳細設定]→[フォームフィルター]で条件を指定し、[フィルターの実行]で適用します。同じタブ内はAND、[または]タブ間はORです。解除しても元のデータは削除されません。 |
この記事でわかること
- 練習用データと操作前の確認
- フォームフィルターを設定する手順
- AND OR 日付と空欄の条件を使い分ける
- 解除できない 抽出できないときの確認
この記事の主な内容
- フォームフィルターでできることと使い分け
- 練習用データと操作前の確認
- フォームフィルターを設定する手順
- AND OR 日付と空欄の条件を使い分ける
- 解除できない 抽出できないときの確認
- 検索フォームへ発展させる判断と確認項目
- よくある質問
想定読了時間:約15分~20分
フォームフィルターでできることと使い分け
フォームフィルターは、現在開いているフォームやデータシートの項目を使い、条件に合うレコードを表示する機能です。新しい検索フォームを設計しなくても、担当者や日付などを組み合わせて一時的に探せます。入力欄に条件を書く操作と、業務データを書き換える操作は区別しましょう。
通常のフィルターでも複数列を絞り込める
1列の値から絞り込むだけなら、[ホーム]の[フィルター]や[選択]が手軽です。通常のフィルターでも、各列へ順に条件を適用すれば複数列を絞り込めます。「複数項目なら必ずフォームフィルターが必要」というわけではありません。
一方、条件の組み合わせをまとめて確認したいときや、「東京の未処理、または大阪の未処理」のような条件集合を作るときはフォームフィルターが便利です。毎日同じ抽出をする場合は、保存クエリや専用の検索フォームにした方が操作を統一できます。
| 方法 | 向く場面 | 注意点 |
|---|---|---|
| 通常のフィルター | 1項目から手早く絞る。複数列への追加も可能 | 以前の条件が残っていないか確認する |
| フォームフィルター | 項目を並べて条件を入力する | ANDとORの範囲を間違えない |
| 保存クエリ | 同じ抽出条件を繰り返し利用する | 変更時は利用するフォームや帳票にも影響する |
| 専用の検索フォーム | 担当者が定型的な検索を行う | 検索ボタンや解除ボタンの設計が必要 |

絞り込みはアクセス権の代わりにならない
フィルターで見えなくなったレコードは、元テーブルから削除されていません。解除すれば再び見える場合があります。顧客情報などを利用者ごとに見せ分ける必要があるときは、接続先の権限やアプリ全体の設計で制御してください。
また、絞り込んだ後のフォームが更新可能なら、表示中のレコードを編集すると元データにも反映されます。「フィルターだから閲覧専用」とは限りません。練習はコピーで行い、条件入力画面を閉じた後の誤入力にも注意します。
練習用データと操作前の確認
まず少ない件数で「何件出るはずか」を決めると、設定ミスを見つけやすくなります。次のT_受注を使う教材例では、受注IDを主キー、受注日を日付/時刻型、地域と状態を短いテキスト型とします。時刻まで保存するデータを想定しています。
| 受注ID | 受注日 | 地域 | 状態 |
|---|---|---|---|
| 1 | 2026/10/01 09:00 | 東京 | 未処理 |
| 2 | 2026/10/01 15:30 | 大阪 | 未処理 |
| 3 | 2026/10/02 10:00 | 東京 | 完了 |
| 4 | 2026/09/30 18:00 | 大阪 | 完了 |
| 5 | 2026/10/01 23:50 | 東京 | 未処理 |
| 6 | 2026/10/02 08:00 | 名古屋 | 未処理 |
T_受注をデータシートビューで開くか、このテーブルをレコードソースにしたフォームをフォームビューで開きます。レコードソースとは、フォームに表示する元のテーブルやクエリです。すでに元クエリで除外されている行は、フォーム側のフィルターを解除しても表示されません。
条件をかける前の4点
①作業対象が本番ファイルかコピーか、②編集途中のレコードがないか、③既存の絞り込みがないか、④対象項目のデータ型が想定どおりかを確認します。変更中のレコードがある場合は、保存するか取り消すかを先に決めます。
フォームに商品名や顧客名が見えていても、保存値がIDのコントロールでは検索対象を取り違えることがあります。選択候補と実際のフィールドを確認し、表示名を使う条件なのかIDを使う条件なのかを整理してから進めてください。

フォームフィルターを設定する手順
フォームフィルターは、通常のデータ入力画面に似た条件入力画面を開いて使用します。操作名はAccessの表示言語やリボン構成によって多少異なることがあります。ここではWindowsデスクトップ版の標準リボンを想定します。
東京の未処理を抽出する
1. 対象のフォームまたはデータシートを開き、既存のフィルターを確認します。
2. [ホーム]→[並べ替えとフィルター]→[詳細設定]→[フォームフィルター]を選びます。
3. 条件入力画面の地域に「東京」、状態に「未処理」を指定します。
4. [フィルターの実行]を押して、通常の表示画面へ戻ります。
5. 教材例では受注IDの1と5の2件になることを確認します。

条件入力時に画面が空欄になっても、それだけでデータが消えたわけではありません。元のレイアウトを使って抽出条件を指定する状態です。対象項目を選ぶときは、表示文字だけでなくフィールド名と条件の意味を確認します。
条件の見直しと絞り込みの終了
抽出結果を見てから条件を変えるときは、再び[フォームフィルター]を開いて修正します。結果が0件でも、すぐにデータを作り直す必要はありません。まず地域だけ、次に状態を追加するという順番で、どの条件で対象がなくなるかを調べます。
作業を終えたらフィルターを解除し、元の表示範囲へ戻ったことを確認します。次の担当者が一部のデータだけを見て全件と誤解しないよう、日常利用するフォームには検索条件や抽出中の表示があると運用しやすくなります
AND OR 日付と空欄の条件を使い分ける
同じ条件タブの別フィールドに入力した条件は、すべて満たすANDです。別の[または]タブに書いた条件集合との間はORになります。ORで共通条件が必要な場合は、それぞれのタブにもその条件を指定するのが基本です。
ANDとORで件数が変わる理由
「東京かつ未処理」は2件です。「東京の未処理、または大阪の未処理」なら3件になります。最初のタブで地域=東京・状態=未処理、[または]タブで地域=大阪・状態=未処理と指定してください。
もし[または]タブで大阪だけを指定すると、大阪の完了レコードである受注ID4も対象になり、合計4件です。この違いは、(東京 AND 未処理) OR 大阪という条件になったためです。ORを加えた後は、共通条件の書き忘れを確認しましょう。

日付は時刻まで含むか確認する
受注日に時刻が入っている場合、「2026/10/01と等しい」という条件だけでは、その日の09:00や23:50を取りこぼすことがあります。丸一日を対象にするなら、開始日以上・翌日未満という範囲で考えると境界が明確です。
条件式の例は、>=DateSerial(2026,10,1) And <DateSerial(2026,10,2)です。教材では受注ID1・2・5の3件が対象になります。月単位なら10月1日以上・11月1日未満とします。日付の表示書式を変更しても、保存されている時刻が消えるわけではありません。
文字と空欄の条件
| 目的 | 条件例 | 確認する点 |
|---|---|---|
| 文字の完全一致 | “東京” | 東京支店などの別表記は一致しない |
| 文字を含む | Like “*東京*” | 一般的なANSI-89の例。ANSI-92なら%を使用する |
| 未入力のNull | Is Null | = Nullでは判定しない |
| 長さ0の文字列 | “” | Nullとは別の値。フィールド設定により保存可否が異なる |
| Nullまたは空文字 | Is Null Or “” | スペースだけの入力は別途確認する |
ワイルドカードは、通常のACCDBで一般的なANSI-89と、設定で使うANSI-92で記号が異なります。部分一致で見つからない場合は、データベースのクエリ構文設定と空白・全角半角の表記を確認します。設定は既存クエリにも関わるため、解決のために安易に切り替えないでください。

解除できない 抽出できないときの確認
「全件へ戻す」と「条件を消す」は同じ操作ではありません。フィルターの実行状態をオフにすると表示は戻りますが、条件定義が残って再適用できる場合があります。最初から別の条件を作るなら、条件自体も消してから設定します。
解除と条件削除を区別する
表示を戻す場合は[フィルターの実行]を再度押してオフにします。保存されている条件を取り除く場合は、[詳細設定]の[すべてのフィルターをクリア]などで条件を消します。クリア対象となるフォームやデータシートを確認して操作してください。
再起動後にも絞られるときは、フォームの[読み込み時にフィルターを適用]や起動イベント、元クエリを確認します。開くたびにVBAやマクロで条件を設定している場合は、画面で解除しただけでは次回起動時の動きは変わりません。

症状から確認箇所を絞る
| 症状 | 主な確認箇所 | 対処の進め方 |
|---|---|---|
| 0件になる | 古い条件、ANDの組み合わせ、日付の時刻 | 条件を1つに減らし、期待する1件で試す |
| ORで多く出る | またはタブの共通条件 | 各タブに必要条件をそろえる |
| 解除しても足りない | 元クエリ、起動時の条件、親子リンク | フィルター以外の絞り込みを調べる |
| コマンドが使えない | ビュー、フィルターの許可、独自リボン | 設計担当へ設定を確認する |
| 一部の項目で指定できない | データ型、計算式、非連結コントロール | 元フィールドを使うクエリでの抽出を検討する |
| サブフォームが変わらない | 操作対象と親子の連結フィールド | 親フォームとサブフォームを別々に確認する |
フォームフィルターには利用できるデータ型やコントロールの制約があります。長いテキストや添付などを、普通の短いテキストと同じ操作で扱えるとは限りません。エラーが出る場合は項目を減らし、元フィールドを指定した選択クエリで条件を整理する方法が有効です。

フォームの検索機能の改善で困ったときは
まずは本記事の手順をコピーで試し、期待した結果との差を確認してください。作成者が不在の場合や、複数の画面・帳票・取込処理に影響する場合は、Accessの教科書へご相談ください。現在の構成、困っている操作、希望する結果を整理すると、調査すべき範囲を伝えやすくなります。
検索フォームへ発展させる判断と確認項目
月に一度だけの確認なら、フォームフィルターのままでも十分な場合があります。毎日複数人が同じ条件で探す場合は、検索用の非連結入力欄と検索・解除ボタンを設けると、条件の取り違えを減らせます。検索欄を業務データの入力欄と分けることも大切です。
VBAを使う場合の最小例
次はT_受注を元にしたフォーム内のコマンドボタンへ設定する例です。[地域]と[状態]が短いテキストであることが前提です。イベントプロパティを[イベントプロシージャ]にしてフォームのモジュールに記載します。SQLのWHEREという語はFilterの文字列に含めません。
Private Sub cmdSearch_Click()
Me.Filter = “[地域]=’東京’ AND [状態]=’未処理'”
Me.FilterOn = True
End Sub
Private Sub cmdClear_Click()
Me.FilterOn = False
Me.Filter = “”
End Sub
この例は固定条件です。入力欄から自由な文字列を組み立てる実装では、引用符を含む文字や日付の表記、未入力の扱いを追加設計します。数字や日付をテキスト型として比較すると想定外の結果になるため、コントロール名だけを置き換えて完成と考えないでください。
業務で使う前の確認
条件なし、1件、複数件、0件、日付の開始境界・終了境界、解除後の表示を確認します。元データを編集できるフォームでは、抽出後の編集権限や保存時の入力チェックも対象です。教材例の件数と照合できたら、自社の実データをコピーした環境で確認範囲を広げます。

フォームフィルターは、画面の項目を使って一時的に複数条件で探す際に便利です。同一タブのANDと[または]タブのOR、時刻付き日付、解除と条件削除を区別すれば、結果が合わない原因を絞り込めます。繰り返し使う検索は保存クエリや専用フォームに整理しましょう。
よくある質問
絞り込み操作だけでは削除されません。ただし、抽出後の画面からレコードを編集・削除すれば元データへ影響します。表示を絞る機能と、データを保護する設定は分けて考えます。
オブジェクトや起動時設定によって条件が保持される場合があります。毎回同じ結果を確実に再現したい場合は、保存クエリや検索ボタンに条件を明示し、他の利用者の操作に依存しない形にします。
検索は条件に合うレコードや値へ移動する用途、フィルターは条件に合うレコードだけを表示する用途です。一覧を絞って確認や印刷へつなげたいときはフィルターが向いています。
標準の条件入力画面で使える項目には制約があります。元テーブルに項目があるだけでは十分ではなく、フォームのレコードソースとコントロールを確認します。必要なら選択クエリで条件を設定します。
帳票が別のレコードソースを使い、フォームの条件が自動では引き継がれていない場合があります。帳票を開く処理と抽出条件を確認し、画面と印刷で同じ範囲を対象にする設計にします。
フォームの検索機能の改善で困ったときは
まずは本記事の手順をコピーで試し、期待した結果との差を確認してください。作成者が不在の場合や、複数の画面・帳票・取込処理に影響する場合は、Accessの教科書へご相談ください。現在の構成、困っている操作、希望する結果を整理すると、調査すべき範囲を伝えやすくなります。
参考情報
抽出条件の例
https://support.microsoft.com/en-us/access/examples-of-query-criteria
日付条件
https://support.microsoft.com/en-us/access/examples-of-using-dates-as-criteria-in-access-queries
FilterOn
https://learn.microsoft.com/en-us/office/vba/api/access.form.filteron
AllowFilters
https://learn.microsoft.com/en-us/office/vba/api/access.form.allowfilters
関連記事
Accessのクエリとは?種類・抽出条件・作り方を解説|Accessの教科書