こんにちは、なかぜんです!
Accessでデータを検索したいとき、テーブルやクエリを開いてフィルターをかけるのはちょっと面倒ですよね。そんなとき便利なのが「フォームに検索機能をつける」方法です。
「検索ボックスをつけたい」「選択した条件で絞り込みたい」そんな悩みを解決するために、今回は初心者の方にもわかりやすく、フォームでの検索機能の作り方をご紹介します。
フォーム検索の仕組みとは?
フォーム検索の基本は、「テキストボックスやコンボボックスで条件を入力し、その内容で表示されるレコードを絞り込む」ことです。
たとえば、以下のような検索画面を作ることができます。
- 名前であいまい検索
- 日付で絞り込み
- カテゴリや担当者などを選択してフィルター
フォーム検索の作り方
ステップ①:検索フォームを作る
まずは空白のフォームを作成し、以下のようなコントロールを配置します。
- テキストボックス: 検索ワードを入力する用(例:txtSearchName)
- コマンドボタン: 検索実行ボタン(例:cmdSearch)
ステップ②:検索条件を適用するVBAを書く
以下のようなコードを検索ボタンに設定します。
Private Sub cmdSearch_Click()
Dim strFilter As String
If Not IsNull(Me.txtSearchName) Then
strFilter = "[氏名] Like '*" & Me.txtSearchName & "*'"
End If
' サブフォームや連続フォームに絞り込みを適用
Me.Filter = strFilter
Me.FilterOn = True
End Sub
解説: このコードでは、txtSearchName
に入力された文字をもとに、「氏名」フィールドに対して部分一致(Like ‘*検索語*’)の条件を設定しています。
ステップ③:リセットボタンで全件表示に戻す
ついでに、リセット用のボタン(例:cmdReset)も用意しておきましょう。
Private Sub cmdReset_Click()
Me.FilterOn = False
Me.txtSearchName = Null
End Sub
よくあるミスと注意点
- フィールド名(例:[氏名])のスペルミスに注意
- Filterプロパティの使い方を間違えるとエラーになることがあります
- Filterはレコードソースのあるフォームでしか使えません(単票フォームなど)
応用編:複数条件で検索してみよう
たとえば、「名前」と「部署」で絞り込む場合は、条件をつなげればOKです。
Private Sub cmdSearch_Click()
Dim strFilter As String
strFilter = "1=1" ' 初期条件
If Not IsNull(Me.txtSearchName) Then
strFilter = strFilter & " AND [氏名] Like '*" & Me.txtSearchName & "*'"
End If
If Not IsNull(Me.cboDept) Then
strFilter = strFilter & " AND [部署] = '" & Me.cboDept & "'"
End If
Me.Filter = strFilter
Me.FilterOn = True
End Sub
ポイント: 条件を「AND」でつなぐことで、複数項目の検索ができます。
まとめ:検索フォームで業務を効率化しよう!
今回はAccessフォームで検索機能をつける方法をご紹介しました。ポイントをまとめると…
- 検索フォームではテキストボックスやコンボボックスを使う
- VBAの
Filter
プロパティを活用する - 複数条件も組み合わせ可能!
業務用のデータベースで「必要な情報をすぐ探せる」というのは本当に便利です。
もったいない本舗 おまとめ店
¥496 (2025/04/23 22:11時点 | 楽天市場調べ)
