【问题标题】:Excel VBA Autofilter error when using criteria2使用条件2时出现Excel VBA自动筛选错误
【发布时间】:2021-06-08 15:58:12
【问题描述】:

Excel 2016 fr 32 位,Windows 10

我想过滤一月份的日期。宏记录器给出:

    ActiveSheet.Range("$A$1:$A$100").AutoFilter Field:=1, Operator:= _
    xlFilterValues, Criteria2:=Array(1, "1/1/2020")

当我播放它时,如果得到“范围类的自动过滤方法失败运行时错误 1004”。 重要的提示。相同的代码在装有 Excel 2013 的同一台计算机上运行良好。

提前致谢。

【问题讨论】:

  • 你不见了Criteria1
  • 这段代码是宏记录器的输出。此外,它在 Excel 2013 上运行良好。

标签: excel vba


【解决方案1】:

Criteria2 用于比较两个条件的值(ANDOR)。欲了解更多信息,请参阅:XlAutoFilterOperator doc page

如果你想过滤值(你可能想要的,因为操作符xlFilterValues),你需要将Variant Array(基于1)传递给Criteria1

类似这样的:

Dim WantedVals as Variant
ReDim WantedVals(1 to n)

WantedVals(1) = "1/1/2020"
'...
WantedVals(n) = "12/1/2099"

ActiveSheet.Range("$A$1:$A$100").AutoFilter Field:=1, Operator:= _
    xlFilterValues, Criteria1:=WantedVals

您的代码可能是以这种方式生成的,因为您在宏录制期间添加了第二个值。当过滤两个值时,Excel 在内部将过滤运算符更改为OR,然后使用Criteria1 = Value1Criteria2 = Value2

注意 (source):AutoFilter 与日期一起使用时,格式应与英文日期分隔符(/)一致,而不是本地设置(.)。有效日期为2/2/2007,而2.2.2007 无效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    相关资源
    最近更新 更多