PR

Accessフォームで検索機能を作る方法|初心者にもできるやさしい手順

Access

こんにちは、なかぜんです!

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プロパティを活用する
  • 複数条件も組み合わせ可能!

業務用のデータベースで「必要な情報をすぐ探せる」というのは本当に便利です。