我正在处理一段VBA代码,该代码应保存并恢复Excel中当前的自动筛选状态。我已经使用the code here了很长一段时间,没有任何问题,但是现在我遇到了相当严重的问题。让我说明一下...

假设您有一个(非常简单的)带有日期过滤功能的表设置:

如果您希望获得以编程方式使用的过滤条件,它将失败:

我在Excel 2010中正在发生这种情况。有人知道解决方法吗?

Microsoft TechNet上其他人描述的相同问题的链接:Excel VBA AutoFilter criteria when Operator is xlFilterValues for Dates这指向Jon von der Heyden's site作为解决方案,但该网站提到:

最佳答案

存储自动过滤器状态(包括日期过滤器的树 View 选择)的另一种方法是使用自定义 View 。

'[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]
Original post by Cyious
但是,要使其工作,必须满足三个条件:
  • 工作簿中的所有工作表均不 protected
  • 在显示自定义 View
  • 之前,不应清除/删除应用了自动筛选器的字段
  • 您的工作簿中的任何工作表上都不能有任何ListObjects(即,范围“格式化为表格”)。如果您至少有一个ListObject,则将全部禁用CustomViews功能,并且对VBA的任何调用都将导致运行时错误1004。保存自定义 View 之前,您必须.UnList所有ListObjects。

  • 奖励:列宽,卡住 Pane 位置和窗口内的范围位置也存储在自定义 View 中。

    关于vba - 尝试获取日期筛选的自动筛选条件时出现错误1004,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22307045/

    10-10 17:13