每次更改工作表数据时,我都会使用此宏重新应用过滤器:
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("SHIFTS").AutoFilter.ApplyFilter
End Sub
仅当数据条目包含特定字符时,我才需要重新应用过滤器。
例如用户可以输入值1,2,3,1S,2S,3S
仅当字符“ S”位于输入值中时,我才需要重新应用过滤器。
答案 0 :(得分:0)
如果您的 1,2,3,1S,2S,3S 在A列中,则每当输入或粘贴 nS 值时,这应重新应用现有的自动筛选器列A。
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的工作表上执行,则父工作表引用将自动隐含在工作表的私有代码表上。