【问题标题】:Autofilter based off drop down基于下拉的自动过滤
【发布时间】:2021-05-08 16:21:24
【问题描述】:

我正在尝试创建一个自动过滤器,该过滤器采用“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

【问题讨论】:

    标签: excel vba excel-formula automation


    【解决方案1】:

    您需要指定您的范围在哪个工作簿/工作表中。否则 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
    

    在没有指定它们所在的工作簿和工作表的情况下,切勿使用RangeCellsRowsColumns。否则 Excel 会“猜测”并可能会猜错。

    【讨论】:

    • 哦,太棒了,非常感谢,我尝试了 ThisWorkBook.Sheet("Sheet1").Range... 谢谢,如果我想从第二个单元格中执行此操作,我可以添加一个AND 在第一个“End if”之前的值?或者它会在VBA之后发生还是允许? - 基本上想要做同样的事情,但基于单元格 B2 而不是 A2 但它取决于它们两者
    • Nvm 想通了,还是非常感谢你 @Peh
    猜你喜欢
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2018-10-04
    相关资源
    最近更新 更多