【问题标题】:Why can't I directly access table.AutoFilter.filters.Item(1).On and set it to False?为什么我不能直接访问 table.AutoFilter.filters.Item(1).On 并将其设置为 False?
【发布时间】:2014-08-01 00:29:25
【问题描述】:

通常当试图弄清楚如何在 VBA 中访问对象的值或属性时,我可以打开局部变量窗口并查看相关对象的子对象并向下钻取,直到找到我正在寻找的值为了。例如,如果我想获取命名列表行的第二个单元格/列,则通过本地窗口进行简单搜索会发现类似

selectedRow.Range.Value2(1, 2)

应该给我答案。

既然都是真的,为什么像下面这样的陈述不起作用?

table.AutoFilter.Filters.Item(1).On = False

假设我只想从设置表对象的第一列中删除过滤器,至少根据 Locals Window 和 Excel VBA 文档,前面的语句应该有效。或者类似的东西:

table.AutoFilter.Filters.Item(3).Criteria1 = "SearchString"

应该让我更新表格中第三列的条件。它清楚地标明了本地窗口中填充的值,VBA 编辑器在键入时很高兴地在自动完成中提供每个级别,但在尝试运行时,“自动过滤”之后的每个级别都会引发错误。

那么,如果您不能使用这些属性,为什么还要提供/建议这些属性呢?我错过了什么?

【问题讨论】:

    标签: excel filtering excel-2013 vba


    【解决方案1】:

    对于 Excel 2010 和 2013,AutoFilter.Filter.Ttem.On 属性是只读的。这样就回答了您的第一个问题。

    http://msdn.microsoft.com/en-us/library/office/ff197843%28v=office.15%29.aspx

    AutoFilter.Filter.Ttem.Criteria1 属性也是如此。第二个答案。

    (我之前都不知道这些事情,所以谢谢你的提问。)

    【讨论】:

    • 我看到该链接没有太大帮助,因为我无法深入了解 OnCriteria1 属性。不过,您可以从 VBA 帮助中获得它。
    • 是的,当我阅读文档时错过了这两个关键词。不过遗憾的是,拥有这些工作会让生活变得更轻松,而不是 VBA 目前允许过滤和排序的 hack-job 方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    相关资源
    最近更新 更多