Vba 尝试获取日期筛选的自动筛选条件时出现错误1004
我正在编写一段VBA代码,它应该在Excel中保存和恢复当前的自动筛选状态。我已经用了很长时间没有任何问题,但现在我遇到了一个相当严重的问题。让我来说明一下 假设您有一个(非常简单的)带有日期筛选的表设置: 如果希望以编程方式使用筛选条件,则将失败: 这在Excel 2010中发生在我身上。有人知道这方面的解决方法吗 Microsoft TechNet上其他人描述的同一问题的链接:这指向解决方案,但该网站提到: 未知(可能是日期树视图筛选器)到目前为止,我无法找到捕获日期筛选器的方法,其中条件基于筛选器下拉列表中树状视图控件的选择。这些标准不存储在Criteria1或Criteria2属性中。我想,制定标准将涉及到循环Range_字段值。尽管这首先需要关闭所有其他字段过滤器,但工作表函数无法执行某些操作,并且需要一个计时器来触发子程序。同样,我选择了避免额外的复杂性Vba 尝试获取日期筛选的自动筛选条件时出现错误1004,vba,excel,Vba,Excel,我正在编写一段VBA代码,它应该在Excel中保存和恢复当前的自动筛选状态。我已经用了很长时间没有任何问题,但现在我遇到了一个相当严重的问题。让我来说明一下 假设您有一个(非常简单的)带有日期筛选的表设置: 如果希望以编程方式使用筛选条件,则将失败: 这在Excel 2010中发生在我身上。有人知道这方面的解决方法吗 Microsoft TechNet上其他人描述的同一问题的链接:这指向解决方案,但该网站提到: 未知(可能是日期树视图筛选器)到目前为止,我无法找到捕获日期筛选器的方法,其中条
这似乎是一个bug,但它仅在使用过滤器选择器底部的树视图时发生
如果您使用“datefilters”选项并选择一个过滤器,那么它将正常工作。对于那些正在寻找提取树视图中选择的日期自动过滤器的方法的人,我有一个工作解决方案,使用XML数据,发布在此处:
存储自动筛选状态(包括日期筛选的treeview选择)的另一种方法是使用自定义视图
'[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]
但是,有三个条件可以让它发挥作用:
额外好处:窗口中的列宽、冻结窗格位置和范围位置也存储在自定义视图中。@Gary's学生您可以在第二个屏幕截图上看到这一行时完全重现该问题-这本身将抛出下面的错误,但是不应该。链接的域不再存在。注意:还有另一个条件:工作簿中的任何工作表上都不能有任何
列表对象(即范围“格式化为表”)。如果您至少有一个ListObject
,则CustomView功能将被完全禁用,任何VBA调用都将导致运行时错误1004。在保存自定义视图之前,您必须.Unlist
所有ListObject。(顺便说一句:我不知道,为什么我的申请被拒绝了——但是,谁知道人们在想什么……)我把你的补充加入了我的回答中,马库斯。谢谢。
'[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]