【问题标题】:Autofilter for dates error: "Method of Range Class Failed"自动过滤日期错误:“范围类方法失败”
【发布时间】:2021-05-12 08:38:20
【问题描述】:

我有一个宏来过滤销售报告。它已经工作了一年多。它停止工作。报告中没有任何变化。

我在自动过滤器行出现错误。我正在尝试在一个字段(3 个日期)中过滤 3 个条件值。

我尝试录制一个宏过滤报告。当我运行它时,我得到了

运行时错误:1004“Range 类的 AutoFilter 方法失败”。

这是下面记录的行,我已将代码中的一些值更改为具有变量而不是硬编码,但我将其发布为用于测试目的。在尝试自动过滤之前,我确保报告没有被过滤。

ActiveSheet.Range("$A$1:$M$1").AutoFilter Field:=2, Operator:= _
    xlFilterValues, Criteria2:=Array(2, "2/5/2021", 2, "2/6/2021", 2, "2/7/2021")

【问题讨论】:

    标签: excel vba filter autofilter


    【解决方案1】:

    这对我有用:

    ActiveSheet.Range("$A$1:$M$1").AutoFilter Field:=2, Operator:= xlFilterValues, _
      Criteria1:=Array("2/5/2021", "2/6/2021", "2/7/2021")
    

    注意Criteria1 不是Criteria2

    编辑:仅供参考,我根本不知道这一点,但此链接 https://www.excelcampus.com/vba/filter-dates/ 解释了您从宏记录器获得的语法 - 它是关于过滤日期“组”而不是特定日期(请参阅“多个日期组”)。

    【讨论】:

    • 我已经尝试过这样,它也没有工作,当我记录它时,它会出现Criteria2而不是1,并且会在数组中添加“2”,但是我已经尝试过,就像你在上面改变这两个东西一样,它仍然不起作用。
    • 对我来说工作得很好,但我无权访问您的数据进行测试。
    • @SenorPenguin 如果单元格包含真实(数字)日期值,请尝试在过滤器数组中使用数字值而不是字符串:CDbl(DateSerial(2021, 2, 5)) where DateSerial(Year, Month, Day)
    • @TimWilliams 我知道它有效,因为它为我工作了一年,我试图弄清楚为什么它会停止工作
    • 如果它停止工作,那么 某事 发生了变化 - 我们只了解您在帖子中所包含的环境,因此我们所能做的就是测试您概述的内容并报告...除非您可以分享一个无效的示例,否则我没有什么可以建议尝试的。
    猜你喜欢
    • 2023-02-02
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2010-12-04
    相关资源
    最近更新 更多