Excel方眼紙からの脱却

VBAのことと、その他いろいろメモ。

入力語句でフィルターをかけるExcelマクロ

例として、都道府県名をインクリメンタルサーチできるようにしてみます。

f:id:piyoco-garden:20160608233014g:plain

手順

  1. フィルタ対象のデータとして、都道府県名を入力します。
  2. 検索語句の入力セルに「SearchPhrase」という名前を定義します。
  3. シート名を右クリック→[コードの表示]を選択します。
  4. 以下の関数を作成します。
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = Range("SearchPhrase").Address Then
        If Target.Text = "" Then
            'フィルタクリア
            ActiveSheet.Range("$B$3:$B$50").AutoFilter Field:=1
        Else
            '入力されたテキストを含む値をフィルタ
            ActiveSheet.Range("$B$3:$B$50").AutoFilter Field:=1, _
                Criteria1:="*" & Target.Text & "*", _
                Operator:=xlFilterValues
        End If
    End If
End Sub

結果

「SearchPhrase」の名前のセルが変更された場合、
入力されたテキストを含む値でフィルタをかけます。
「SearchPhrase」の名前のセルの値がクリアされた場合、
フィルタをクリアします。