Excel 2013 VBA 清除活动过滤器
Excel 2013 VBA clear active filter
我需要在 运行 某个宏之前清除 sheet 中的任何活动过滤器,如果
上有活动过滤器,此行工作正常
If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData
但是,如果没有选择过滤器,它 returns 错误
Runtime error '1004';
ShowAllData method of Worksheet class failed
我从这个问题的答案中得到了那个代码
Excel 2013 VBA Clear All Filters macro
但是这个问题没有解释如果没有过滤器处于活动状态如何忽略该行。
如果当前没有应用活动过滤器,我如何忽略此行?
编辑
例如,所有列标题都已自动过滤,因此如果我的 sheet 被 'Female' 过滤,例如我需要在 运行 宏之前删除该过滤器,但是,如果没有应用任何过滤器,则只是 运行 正常的宏
我由衷地钦佩您针对特定情况进行编程的愿望,但我不得不承认,实现这一目标的最快方法是 On Error Resume Next
。
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
您不必破坏某些东西来检查它是否存在,但在 VBA 中,这有时是最好的办法。就个人而言,我将 On Error Resume Next
排在 SendKeys
作为编程方法的位置。
上述方法不需要您检查 .AutoFilterMode
是否 True.
使用 FilterMode 而不是 AutoFilterMode。我经常处理过滤器,这段代码工作正常。
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
确保工作表不受保护,因为这也会导致 1004 错误。
我知道这是一个相对较老的 post 并且不太喜欢当死灵法师...但是由于我遇到了同样的问题并尝试了这个线程中的一些选项但没有成功我合并获得工作宏的一些答案..
希望这对外面的人有帮助:)
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
我需要在 运行 某个宏之前清除 sheet 中的任何活动过滤器,如果
上有活动过滤器,此行工作正常If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData
但是,如果没有选择过滤器,它 returns 错误
Runtime error '1004';
ShowAllData method of Worksheet class failed
我从这个问题的答案中得到了那个代码 Excel 2013 VBA Clear All Filters macro
但是这个问题没有解释如果没有过滤器处于活动状态如何忽略该行。
如果当前没有应用活动过滤器,我如何忽略此行?
编辑
例如,所有列标题都已自动过滤,因此如果我的 sheet 被 'Female' 过滤,例如我需要在 运行 宏之前删除该过滤器,但是,如果没有应用任何过滤器,则只是 运行 正常的宏
我由衷地钦佩您针对特定情况进行编程的愿望,但我不得不承认,实现这一目标的最快方法是 On Error Resume Next
。
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
您不必破坏某些东西来检查它是否存在,但在 VBA 中,这有时是最好的办法。就个人而言,我将 On Error Resume Next
排在 SendKeys
作为编程方法的位置。
上述方法不需要您检查 .AutoFilterMode
是否 True.
使用 FilterMode 而不是 AutoFilterMode。我经常处理过滤器,这段代码工作正常。
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
确保工作表不受保护,因为这也会导致 1004 错误。
我知道这是一个相对较老的 post 并且不太喜欢当死灵法师...但是由于我遇到了同样的问题并尝试了这个线程中的一些选项但没有成功我合并获得工作宏的一些答案..
希望这对外面的人有帮助:)
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