Accessのフォームフィルターの使い方 複数条件と解除方法を解説

概要

この記事の結論
Accessのフォームフィルターは、フォームやデータシートの複数項目に条件を入力して、該当するレコードだけを表示する機能です。[ホーム]→[詳細設定]→[フォームフィルター]で条件を指定し、[フィルターの実行]で適用します。同じタブ内はAND、[または]タブ間はORです。解除しても元のデータは削除されません。

この記事でわかること

  • 練習用データと操作前の確認
  • フォームフィルターを設定する手順
  • AND OR 日付と空欄の条件を使い分ける
  • 解除できない 抽出できないときの確認

この記事の主な内容

  1. フォームフィルターでできることと使い分け
  2. 練習用データと操作前の確認
  3. フォームフィルターを設定する手順
  4. AND OR 日付と空欄の条件を使い分ける
  5. 解除できない 抽出できないときの確認
  6. 検索フォームへ発展させる判断と確認項目
  7. よくある質問

想定読了時間:約15分~20分


フォームフィルターでできることと使い分け

フォームフィルターは、現在開いているフォームやデータシートの項目を使い、条件に合うレコードを表示する機能です。新しい検索フォームを設計しなくても、担当者や日付などを組み合わせて一時的に探せます。入力欄に条件を書く操作と、業務データを書き換える操作は区別しましょう。

通常のフィルターでも複数列を絞り込める

1列の値から絞り込むだけなら、[ホーム]の[フィルター]や[選択]が手軽です。通常のフィルターでも、各列へ順に条件を適用すれば複数列を絞り込めます。「複数項目なら必ずフォームフィルターが必要」というわけではありません。

一方、条件の組み合わせをまとめて確認したいときや、「東京の未処理、または大阪の未処理」のような条件集合を作るときはフォームフィルターが便利です。毎日同じ抽出をする場合は、保存クエリや専用の検索フォームにした方が操作を統一できます。

方法向く場面注意点
通常のフィルター1項目から手早く絞る。複数列への追加も可能以前の条件が残っていないか確認する
フォームフィルター項目を並べて条件を入力するANDとORの範囲を間違えない
保存クエリ同じ抽出条件を繰り返し利用する変更時は利用するフォームや帳票にも影響する
専用の検索フォーム担当者が定型的な検索を行う検索ボタンや解除ボタンの設計が必要
フィルターとクエリの使い分けを、Accessの操作と実務上の注意点に沿って説明する図

絞り込みはアクセス権の代わりにならない

フィルターで見えなくなったレコードは、元テーブルから削除されていません。解除すれば再び見える場合があります。顧客情報などを利用者ごとに見せ分ける必要があるときは、接続先の権限やアプリ全体の設計で制御してください。

また、絞り込んだ後のフォームが更新可能なら、表示中のレコードを編集すると元データにも反映されます。「フィルターだから閲覧専用」とは限りません。練習はコピーで行い、条件入力画面を閉じた後の誤入力にも注意します。


練習用データと操作前の確認

まず少ない件数で「何件出るはずか」を決めると、設定ミスを見つけやすくなります。次のT_受注を使う教材例では、受注IDを主キー、受注日を日付/時刻型、地域と状態を短いテキスト型とします。時刻まで保存するデータを想定しています。

受注ID受注日地域状態
12026/10/01 09:00東京未処理
22026/10/01 15:30大阪未処理
32026/10/02 10:00東京完了
42026/09/30 18:00大阪完了
52026/10/01 23:50東京未処理
62026/10/02 08:00名古屋未処理

T_受注をデータシートビューで開くか、このテーブルをレコードソースにしたフォームをフォームビューで開きます。レコードソースとは、フォームに表示する元のテーブルやクエリです。すでに元クエリで除外されている行は、フォーム側のフィルターを解除しても表示されません。

条件をかける前の4点

①作業対象が本番ファイルかコピーか、②編集途中のレコードがないか、③既存の絞り込みがないか、④対象項目のデータ型が想定どおりかを確認します。変更中のレコードがある場合は、保存するか取り消すかを先に決めます。

フォームに商品名や顧客名が見えていても、保存値がIDのコントロールでは検索対象を取り違えることがあります。選択候補と実際のフィールドを確認し、表示名を使う条件なのかIDを使う条件なのかを整理してから進めてください。

操作前に確認する4項目を、Accessの操作と実務上の注意点に沿って説明する図

フォームフィルターを設定する手順

フォームフィルターは、通常のデータ入力画面に似た条件入力画面を開いて使用します。操作名はAccessの表示言語やリボン構成によって多少異なることがあります。ここではWindowsデスクトップ版の標準リボンを想定します。

東京の未処理を抽出する

1. 対象のフォームまたはデータシートを開き、既存のフィルターを確認します。
2. [ホーム]→[並べ替えとフィルター]→[詳細設定]→[フォームフィルター]を選びます。
3. 条件入力画面の地域に「東京」、状態に「未処理」を指定します。
4. [フィルターの実行]を押して、通常の表示画面へ戻ります。
5. 教材例では受注IDの1と5の2件になることを確認します。

フォームフィルターの操作順を、Accessの操作と実務上の注意点に沿って説明する図

条件入力時に画面が空欄になっても、それだけでデータが消えたわけではありません。元のレイアウトを使って抽出条件を指定する状態です。対象項目を選ぶときは、表示文字だけでなくフィールド名と条件の意味を確認します。

条件の見直しと絞り込みの終了

抽出結果を見てから条件を変えるときは、再び[フォームフィルター]を開いて修正します。結果が0件でも、すぐにデータを作り直す必要はありません。まず地域だけ、次に状態を追加するという順番で、どの条件で対象がなくなるかを調べます。

作業を終えたらフィルターを解除し、元の表示範囲へ戻ったことを確認します。次の担当者が一部のデータだけを見て全件と誤解しないよう、日常利用するフォームには検索条件や抽出中の表示があると運用しやすくなります


AND OR 日付と空欄の条件を使い分ける

同じ条件タブの別フィールドに入力した条件は、すべて満たすANDです。別の[または]タブに書いた条件集合との間はORになります。ORで共通条件が必要な場合は、それぞれのタブにもその条件を指定するのが基本です。

ANDとORで件数が変わる理由

「東京かつ未処理」は2件です。「東京の未処理、または大阪の未処理」なら3件になります。最初のタブで地域=東京・状態=未処理、[または]タブで地域=大阪・状態=未処理と指定してください。

もし[または]タブで大阪だけを指定すると、大阪の完了レコードである受注ID4も対象になり、合計4件です。この違いは、(東京 AND 未処理) OR 大阪という条件になったためです。ORを加えた後は、共通条件の書き忘れを確認しましょう。

ANDとORの条件の組み方を、Accessの操作と実務上の注意点に沿って説明する図

日付は時刻まで含むか確認する

受注日に時刻が入っている場合、「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なら%を使用する
未入力のNullIs Null= Nullでは判定しない
長さ0の文字列“”Nullとは別の値。フィールド設定により保存可否が異なる
Nullまたは空文字Is Null Or “”スペースだけの入力は別途確認する

ワイルドカードは、通常のACCDBで一般的なANSI-89と、設定で使うANSI-92で記号が異なります。部分一致で見つからない場合は、データベースのクエリ構文設定と空白・全角半角の表記を確認します。設定は既存クエリにも関わるため、解決のために安易に切り替えないでください。

日付 文字 空欄の条件の考え方を、Accessの操作と実務上の注意点に沿って説明する図

解除できない 抽出できないときの確認

「全件へ戻す」と「条件を消す」は同じ操作ではありません。フィルターの実行状態をオフにすると表示は戻りますが、条件定義が残って再適用できる場合があります。最初から別の条件を作るなら、条件自体も消してから設定します。

解除と条件削除を区別する

表示を戻す場合は[フィルターの実行]を再度押してオフにします。保存されている条件を取り除く場合は、[詳細設定]の[すべてのフィルターをクリア]などで条件を消します。クリア対象となるフォームやデータシートを確認して操作してください。

再起動後にも絞られるときは、フォームの[読み込み時にフィルターを適用]や起動イベント、元クエリを確認します。開くたびにVBAやマクロで条件を設定している場合は、画面で解除しただけでは次回起動時の動きは変わりません。

解除と条件削除の違いを、Accessの操作と実務上の注意点に沿って説明する図

症状から確認箇所を絞る

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

フォームフィルターには利用できるデータ型やコントロールの制約があります。長いテキストや添付などを、普通の短いテキストと同じ操作で扱えるとは限りません。エラーが出る場合は項目を減らし、元フィールドを指定した選択クエリで条件を整理する方法が有効です。

抽出結果が違うときの確認順を、Accessの操作と実務上の注意点に沿って説明する図

フォームの検索機能の改善で困ったときは

まずは本記事の手順をコピーで試し、期待した結果との差を確認してください。作成者が不在の場合や、複数の画面・帳票・取込処理に影響する場合は、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件、日付の開始境界・終了境界、解除後の表示を確認します。元データを編集できるフォームでは、抽出後の編集権限や保存時の入力チェックも対象です。教材例の件数と照合できたら、自社の実データをコピーした環境で確認範囲を広げます。

検索フォームへ進む判断基準を、Accessの操作と実務上の注意点に沿って説明する図

フォームフィルターは、画面の項目を使って一時的に複数条件で探す際に便利です。同一タブのANDと[または]タブのOR、時刻付き日付、解除と条件削除を区別すれば、結果が合わない原因を絞り込めます。繰り返し使う検索は保存クエリや専用フォームに整理しましょう。


よくある質問

絞り込み操作だけでは削除されません。ただし、抽出後の画面からレコードを編集・削除すれば元データへ影響します。表示を絞る機能と、データを保護する設定は分けて考えます。

オブジェクトや起動時設定によって条件が保持される場合があります。毎回同じ結果を確実に再現したい場合は、保存クエリや検索ボタンに条件を明示し、他の利用者の操作に依存しない形にします。

検索は条件に合うレコードや値へ移動する用途、フィルターは条件に合うレコードだけを表示する用途です。一覧を絞って確認や印刷へつなげたいときはフィルターが向いています。

標準の条件入力画面で使える項目には制約があります。元テーブルに項目があるだけでは十分ではなく、フォームのレコードソースとコントロールを確認します。必要なら選択クエリで条件を設定します。

帳票が別のレコードソースを使い、フォームの条件が自動では引き継がれていない場合があります。帳票を開く処理と抽出条件を確認し、画面と印刷で同じ範囲を対象にする設計にします。

フォームの検索機能の改善で困ったときは

まずは本記事の手順をコピーで試し、期待した結果との差を確認してください。作成者が不在の場合や、複数の画面・帳票・取込処理に影響する場合は、Accessの教科書へご相談ください。現在の構成、困っている操作、希望する結果を整理すると、調査すべき範囲を伝えやすくなります。


参考情報

フィルターの種類と操作
https://support.microsoft.com/en-us/access/apply-a-filter-to-view-select-records-in-an-access-database

抽出条件の例
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のクエリとは?種類・抽出条件・作り方を解説|Accessの教科書

Accessのコントロールソースとは?設定方法・レコードソースとの違いを初心者向けに解説

Access パラメーターの入力が出る原因と消す方法

TOP