尝试获取date筛选的AutoFilter条件时出现错误1004

我正在处理一块VBA代码,它应该保存并恢复Excel中当前的AutoFilter状态。 我一直在这里使用代码没有任何问题,但现在我已经遇到了一个非常严重的代码。 让我说明一下…

假设你有一个(非常简单的)表设置与date过滤: 在这里输入图像描述

如果你想获得编程使用的过滤标准,它将失败: 在这里输入图像描述

这在Excel 2010中发生了。有谁知道这个解决方法吗?

Microsoft TechNet上其他人描述的相同问题的链接: 运算符是xlFilterValuesdate时的Excel VBA自动筛选条件这指向Jon von der Heyden网站上的解决scheme,但该网站提到:

未知(可能是dateTreeViewfilter) :到目前为止,我无法find一种方法来捕获datefilter,其中的条件是基于从“filter”下拉列表中的“树视图”控件中的select。 这些标准不存储在Criteria1或Criteria2属性中。 我想象出工作的标准将涉及循环的Range_Field值。 虽然这将首先要求所有其他的字段filter被closures,从工作表函数中不可行并且涉及触发子例程的计时器。 再次,我select避免额外的复杂性。

似乎是一个错误,但只有在使用filterselect器底部的树视图时才会发生。

如果使用“datefilters”选项并select一个filter,那么它将正常工作。

另一种存储自动filter状态(包括datefilter的树形视图select)的方法是使用自定义视图。

'[whatever code you want to run before capturing autofilter settings] wkbExample.CustomViews.Add ViewName:="cvwAutoFilterSettings", RowColSettings:=True '[whatever code you want to run with either your autofilter or no autofilter] wkbExample.CustomViews("cvwAutoFilterSettings").Show wkbExample.CustomViews("cvwAutoFilterSettings").Delete '[whatever code you want to run after restoring original autofilter settings] 

由Cyious原始的职位

但是有三个条件可以使它工作:

  1. 工作簿中的任何表都不应受到保护
  2. 显示自定义视图之前,不应该清除/删除应用自动筛选的字段
  3. 您的工作簿中的任何工作表上不能有任何ListObjects(即范围“格式为表格”)。 如果至less有一个ListObject,则CustomViewsfunction将被禁用,任何VBA调用都将导致运行时错误1004.您必须在保存自定义视图之前将.UnList全部列出。

奖励:窗口内的列宽,冻结窗格位置和范围位置也存储在自定义视图中。

对于那些正在寻找一种方法来提取在树视图中select的date自动筛选器,我有一个工作的解决scheme,使用XML数据,张贴在这里:
在Excel VBA中获取date自动filter