【问题标题】:Excel 2013 VBA clear active filterExcel 2013 VBA 清除主动过滤器
【发布时间】:2023-03-12 15:35:01
【问题描述】:

我需要在运行某个宏之前清除工作表中的所有活动过滤器,如果有一个活动过滤器,这条线就可以正常工作

If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData

但是,如果没有选择过滤器,则会返回错误

Runtime error '1004';
ShowAllData method of Worksheet class failed

我从这个问题的答案中得到了那个代码 Excel 2013 VBA Clear All Filters macro

但是,如果没有过滤器处于活动状态,该问题并未解释如何忽略该行。

如果当前没有应用有效的过滤器,我如何忽略此行?

编辑

例如,所有列标题都已自动过滤,因此如果我的工作表被“女性”过滤,例如,我需要在运行宏之前删除该过滤器,但是如果没有应用过滤器,只需将宏运行为正常

【问题讨论】:

  • 那设置什么样的过滤器呢?您说您需要如果没有有效过滤器,则清除所有有效过滤器。对我来说似乎是个悖论。
  • 如果有活动过滤器,我需要清除所有活动过滤器,如果没有,则忽略该 VBA 行。所有列标题都已自动过滤,因此如果我的工作表被“女性”过滤,例如我需要在运行宏之前删除该过滤器,但是如果没有应用过滤器,只需正常运行宏。

标签: vba excel


【解决方案1】:

使用 FilterMode 而不是 AutoFilterMode。我经常处理过滤器,这段代码运行良好。

If ActiveSheet.FilterMode Then
    ActiveSheet.ShowAllData
End If

确保工作表不受保护,因为这也会产生 1004 错误。

【讨论】:

    【解决方案2】:

    我由衷钦佩您针对特定情况进行编程的愿望,但我不得不承认,实现这一目标的最快方法是使用On Error Resume Next

    On Error Resume Next
    ActiveSheet.ShowAllData
    On Error GoTo 0
    

    您不应该打破某些东西来检查它是否存在,但在 VBA 中,这有时是最好的办法。就个人而言,我将On Error Resume NextSendKeys 列为编程方法。

    上述方法不需要你检查.AutoFilterMode是否为

    【讨论】:

      【解决方案3】:

      我知道这是一个相对较旧的帖子,并且不太喜欢成为死灵法师......但由于我遇到了同样的问题并尝试了这个线程中的一些选项但没有成功,我结合了一些答案来获得一个工作宏..

      希望这可以帮助那里的人:)

      Sub ResetFilters()
        On Error Resume Next
        For Each wrksheet In ActiveWorkbook.Worksheets
          wrksheet.ShowAllData 'This works for filtered data not in a table
          For Each lstobj In wrksheet.ListObjects
            If lstobj.ShowAutoFilter Then
              lstobj.Range.AutoFilter 'Clear filters from a table
              lstobj.Range.AutoFilter 'Add the filters back to the table
            End If
          Next 'Check next worksheet in the workbook
        Next
      End Sub
      

      ** 可能重复的线程:Excel 2013 VBA Clear All Filters Macro

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-25
        相关资源
        最近更新 更多