我正在制作一块VBA代码,应该可以节省和使用在Excel中恢复当前的AutoFilter状态。我一直在使用the code here一段时间没有任何问题,但现在我遇到了一个非常严重的问题。让我说明一下......
假设你有一个(非常简单的)表设置日期过滤:
如果您希望以编程方式使用过滤条件,则会失败:
在Excel 2010中发生了这种情况。有人知道解决方法吗?
Microsoft TechNet上其他人描述的同一问题的链接:Excel VBA AutoFilter criteria when Operator is xlFilterValues for Dates这指向Jon von der Heyden's site的解决方案,但网站提到:
未知(可能是日期TreeView过滤器):到目前为止,我无法找到一种方法来捕获日期过滤器,其中条件基于Filter过滤器下拉菜单控件中的选择。这些条件不存储在Criteria1或Criteria2属性中。我想,制定标准将涉及循环Range_Field值。虽然这首先要求关闭所有其他字段过滤器,但是工作表函数无法执行某些操作,并且会涉及触发子例程的计时器。我再次选择避免额外的复杂性。
答案 0 :(得分:3)
存储自动过滤器状态的另一种方法(包括日期过滤器的树视图选择)是使用自定义视图。
'[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]
然而,有三个条件可以使它发挥作用:
奖励:窗口中的列宽,冻结窗格位置和范围位置也存储在自定义视图中。
答案 1 :(得分:2)
似乎是一个错误,但只有在使用过滤器选择器底部的树视图时才会出现。
如果您使用“datefilters”选项并选择过滤器,那么它将正常工作。
答案 2 :(得分:0)
对于那些寻找提取在树视图中选择的日期自动过滤器的方法的人,我有一个工作解决方案,使用XML数据,发布在这里:
Get Date Autofilter in Excel VBA