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