【问题标题】:Excel VBA Reset multiple advanced filters with ShowAllDataExcel VBA 使用 ShowAllData 重置多个高级过滤器
【发布时间】:2018-08-04 15:50:33
【问题描述】:

我在工作表中使用 3 个高级过滤器,我想重置所有 3 个表格。使用 showAllData 只会重置最后一个表。我尝试取消隐藏过滤的行但没有成功。也许我应该遍历所有 3 个表?

Sub ClearFilter()
    ActiveSheet.ShowAllData
End Sub

【问题讨论】:

  • 似乎您需要使用数据过滤 range1(表)工作,然后将其清除,然后 Range2 相同,Range3 相同。清除仅适用于最近使用的过滤器,它不会将它们缓冲在内存中以进行一次撤消。您可以编写一个撤消所有 3. 的宏,方法是再次选择范围并清除过滤器(我相信,未经测试)。

标签: excel vba filter


【解决方案1】:

ShowAllData从最后一个表中清除过滤器后,您可以取消隐藏剩余的隐藏行以显示所有数据这样...

Sub ClearFilter()
    On Error Resume Next
    ActiveSheet.ShowAllData
    ActiveSheet.Rows.Hidden = False
End Sub

【讨论】:

  • @Waimea 不客气!您接受的解决方案是否适合您?
  • 好的。但是为什么你更喜欢循环遍历表格来禁用过滤器,而我提出的解决方案是直接的并且不需要任何循环?
  • 我更喜欢你的解决方案,我相应地更改了绿色箭头!
  • @Waimea 谢谢!
【解决方案2】:

我想这就是你要找的:

IF Sheets("Sheet1").ListObjects("Table1").AutoFilter.FilterMode = True THEN Sheets("Sheet1").ListObjects("Table1").AutoFilter.ShowAllData

替换您拥有的工作表和表格名称。您需要IF 语句来检查是否设置了过滤器,否则当您尝试清除不存在的过滤器时会出错。

如需进一步阅读,请参阅:Why does ActiveSheet.FilterMode returns False when sheet has filter?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2017-02-16
    相关资源
    最近更新 更多