从单元数据触发的有源滤波器

时间:2015-01-22 18:44:18

标签: excel vba excel-vba

我想要的是一个过滤器,我可以在单元格中键入一个条目,然后使用其余的列过滤器。清除此条目后,工作表应返回到我开始键入之前的状态。目前,当我从该框中删除时,它会清除工作表上的所有数据。

我目前使用的是此代码。任何人都知道如何干净利落地工作?

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

1 个答案:

答案 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行中更改的值的代码。