Excel
VBA
ExcelVBA

ExcelのオートフィルタをVBAでちょっと便利に

More than 1 year has passed since last update.

使い方

オートフィルターがかかっているシートで、絞り込みたい値のセルを選択し、
キーボードの[END]キーを押すと、部分一致で絞り込む
もう一度押すと解除する

Caputure.gif

コード

ThisWorkbook.cls
Option Explicit

Private Sub Workbook_Open()
    Application.OnKey "{END}", "ThisWorkbook.FilterOnOff"
End Sub

Sub FilterOnOff()
    Dim a As AutoFilter, c As Long, v As String
    With ActiveCell
        Set a = .Parent.AutoFilter
        If a Is Nothing Then Exit Sub
        c = .Column - a.Range.Column + 1
        If c < 1 Or a.Filters.Count < c Then Exit Sub
        v = "*" & .Value & "*"
    End With
    With a
        If .Filters(c).On Then
            .Range.AutoFilter c
        Else
            .Range.AutoFilter c, v
        End If
    End With
End Sub