从表中清除过滤器

Dun*_*unn 13 excel vba excel-vba

我正在尝试运行一个宏来替换Excel中的表中的数据,这可能最初会过滤数据.

代码应首先删除过滤器,然后运行其余代码.

我尝试了"自动筛选"命令,但随后对表的范围内正常的过滤选项是不可见的,而我不得不再次手动创建过滤器选项(不是什么大不了的事给我,但其他人使用本文件).

有没有办法清除过滤器而不从表中删除过滤器?

Ror*_*ory 26

对于表,您可以简单地使用ShowAllDataAutofilter对象的方法:

activesheet.listobjects(1).autofilter.showalldata
Run Code Online (Sandbox Code Playgroud)

请注意,即使当前没有应用过滤器,也不会出错.

  • 当取消过滤表时,执行以下 `activesheet.listobjects("Table Name").AutoFilter.ShowAllData` 这解决了我遇到的问题 (3认同)

Chr*_*isB 8

这扩展了@Rory 的答案(每次我记不住语法时我都会查找的答案)。它可以避免表不包含自动筛选器时发生的错误。

该部分If Not .AutoFilter Is Nothing检查 ListObject(表)的 AutoFilter 对象属性。如果是Is Nothing,那么该表的自动过滤器已被删除。

With Activesheet.Listobjects(1)
    If not .AutoFilter Is Nothing Then .AutoFilter.ShowAllData
End With
Run Code Online (Sandbox Code Playgroud)