ACCESS VBA Filterプロパティの使い方

Filterプロパティの使い方

ACCESS VBAでレコードを思い通りに抽出したい。

そう思ったことはありませんか。
そんな時に使用するのが、Filterプロパティです。

プロパティって何?と思われるかも多いかもしれませんが、使いこなすことができれば非常に便利です。

今回はFilterプロパティの使い方をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

Filterプロパティとは

Filterプロパティとは、フォーム、レポート、クエリ、テーブルなどのオブジェクトに対して、指定した条件でレコードの抽出を行うことができる機能です。

もっともよく使用するのはフォームに対してです。

現在開いているフォームに対して、以下のように使用して表示するレコードを抽出します。

Me.Filter = ” 抽出条件 “
Me.FiliterOn = True

一行目で、Me(つまり現在のフォーム)のFilterプロパティに指定の抽出条件をセットします。

そのうえで、二行目でFilterOnをTrueにしてフィルターを実行します。

Filterプロパティの使用例

実際のFilterプロパティの使用例を見てみましょう。

検索用のフォームを作成する際にFilterプロパティを使用します。
今回は顧客検索フォームを作成してみましょう。

まずは顧客テーブルを用意します。

そして、このテーブルを基にしたフォームを作成します。
検索用のフォームですので、表形式にしておきます。

フォームをデザインビューで見るとこんな感じです。

上段のヘッダーセクションに、検索条件(今回は顧客名検索)を入力するための非連結テキストボックスを作成します。

詳細セクションはMST_顧客テーブルを基に、表示するフィールドを絞ったテキストボックスを配置しています。

検索を実行するために配置したのが検索ボタンです。
この検索ボタンにクリック時イベントを設定します。

VBAでクリック時に設定した検索用のイベントプロシージャは下記のとおりです。
フォームに対するFilterプロパティを使って検索を行っています。



Private Sub 検索_ボタン_Click()

  Dim filter_txt As String

    filter_txt = ""

    '顧客名
    If Me!顧客名検索 <> "" Then
       
        filter_txt = "顧客名 like '*" & Me!顧客名検索 & "*'"
             
    End If

    '削除
    If Me!削除検索 = False Then
       
       If filter_txt = "" Then
       
        filter_txt = "削除 = false"
       
       Else
         
        filter_txt = filter_txt & " and 削除 = false"
    
       End If
        
    End If
    
    If filter_txt = "" Then

        Me.FilterOn = False

    Else

        Me.Filter = filter_txt
        Me.FilterOn = True
        Me.OrderBy = "顧客名ふりがな ASC"
        Me.OrderByOn = True

    End If
    
End Sub

filter_txtというテキスト型の変数を設定し、この変数に抽出条件を格納しています。

抽出条件はフォームに設置した顧客名検索の入力値と、削除データを検索条件に含むか否かのチェックボックスの状態から作成しています。

そして、filter_txtに抽出条件を格納した後に、

Me.Filter = filter_txt
Me.FilterOn = True

でフォームにフィルターを適用しているのです。

このように、filterプロパティを使用すると自由自在に検索ができる検索フォームを作成できます。

以上、Filterプロパティの使い方をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。