条件自动过滤器

问题描述 投票:0回答:1

每次对工作表的数据进行更改时,我都会使用此宏重新应用过滤器:

Private Sub Worksheet_Change(ByVal Target As Range)

   Sheets("SHIFTS").AutoFilter.ApplyFilter

End Sub

我需要仅在数据条目包含特定字符时重新应用过滤器。

例如用户可以输入值1,2,3,1S,2S,3S

我需要仅在字符“S”在输入值中时重新应用过滤器。

excel vba
1个回答
0
投票

如果您的1,2,3,1S,2S,3S在A列中,则只要在A列中键入或粘贴nS值,就应该重新应用现有的AutoFilter。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("A:A"), UsedRange) Is Nothing Then
        On Error GoTo bye
        Application.EnableEvents = False
        Dim t As Range
        For Each t In Intersect(Target, Range("A:A"), UsedRange)
            If CBool(InStr(1, t.Value, "s", vbTextCompare)) Then
                If AutoFilterMode Then _
                    AutoFilter.ApplyFilter
                Exit For
            End If
        Next t
    End If

bye:
    Application.EnableEvents = True
End Sub

如果在Worksheet_Change的工作表上执行所有操作,则父工作表引用将自动隐含在工作表的私有代码表中。

© www.soinside.com 2019 - 2024. All rights reserved.