我想要的是一个过滤器,我可以在单元格中键入一个条目,然后使用其余的列过滤器。清除此条目后,工作表应返回到我开始键入之前的状态。目前,当我从该框中删除时,它会清除工作表上的所有数据。
我目前使用的是此代码。任何人都知道如何干净利落地工作?
Private Sub Worksheet_Change(ByVal Target As Range)
If (Intersect(Target, Range("G2")) Is Nothing) _
Then
Exit Sub
End If
Cells.AutoFilter Field:=7, Criteria1:="=" & Range("G2")
End Sub
答案 0 :(得分:0)
如果G2
中有空值,我相信此代码会删除条件。我还添加了一项检查,以确保您的Target
只是一个单元格,如果您修改了包含G2
的整个范围,您的代码就会触发。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target is Nothing Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
If Target.Row <> 2 Then Exit Sub
Dim LastCol As Long
LastCol = Cells(4, Columns.Count).End(xlToLeft).Column
If Target.Value = "" Then
Range(Cells(4, 1), Cells(4, LastCol).AutoFilter Field:=Target.Column
Else
Range(Cells(4, 1), Cells(4, LastCol).AutoFilter Field:=Target.Column, Criteria1:="=" & Target.Value
End If
End Sub
更新了适用于第2行中更改的值的代码。