首页 > 解决方案 > 基于下拉的自动过滤器

问题描述

我正在尝试创建一个自动过滤器,该过滤器采用“sheet1”的 A2 中的内容,并在 F2 及以下的“Sheet2”上更改过滤器;

这是到目前为止的代码,我所需要的只是让它看看不同的工作表

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$F$2" Then
        If Range("F2") = "All" Then
            Range("A2").AutoFilter
        Else
            Range("A2").AutoFilter Field:=6, Criteria1:=Range("F2")
        End If
    End If
End Sub

标签: excelvbaexcel-formulaautomation

解决方案


您需要指定您的范围在哪个工作簿/工作表中。否则 VBA 无法知道这一点。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$F$2" Then
        If ThisWorkbook.Worksheets("Sheet1").Range("F2") = "All" Then
            ThisWorkbook.Worksheets("Sheet2").Range("A2").AutoFilter
        Else
            ThisWorkbook.Worksheets("Sheet2").Range("A2").AutoFilter Field:=6, Criteria1:=ThisWorkbook.Worksheets("Sheet1").Range("F2")
        End If
    End If
End Sub

切勿使用RangeCells或不指定它们所在的工作簿RowsColumns工作表。否则 Excel 会“猜测”,它可能会猜错。


推荐阅读