我正在尝试对活动工作簿中每个工作表中的每个表进行排序,并重置所有过滤器。
请注意,每个表都是一个数据透视表。
Sub ResetFilters()
Dim ws As Worksheet
Dim wb As Workbook
Dim listObj As ListObjects
For Each ws In ActiveWorkbook.Worksheets
For Each listObj In ws
With ActiveSheet.listObj.Sort.SortFields.Clear
End With
Next listObj
Next ws
End Sub
收到错误:第7行上的“对象不支持此属性或方法”。
假设您的意思是清除过滤器并删除排序,您可以使用:
Sub ResetFilters()
Dim ws As Worksheet
Dim wb As Workbook
Dim listObj As ListObject
For Each ws In ActiveWorkbook.Worksheets
For Each listObj In ws.ListObjects
If listObj.ShowHeaders Then
listObj.AutoFilter.ShowAllData
listObj.Sort.SortFields.Clear
End If
Next listObj
Next ws
End Sub
这适用于对前一个答案的一个小改动。只需使用ShowAutoFilter属性而不是ShowHeaders。 ShowAutoFilter是引用这些东西的属性:Screencap of AutoFilter Dropdown Box in Excel Table
(我会对其他答案发表评论,但我需要50个“声望”-_-)
7行解决方案这将显示所有数据而不删除过滤器,并且在未过滤的纸张上不会失败。
Sub RemoveFilters()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
On Error Resume Next
ws.ShowAllData
Next ws
End Sub
海报的VBA可能在遇到未经过滤的纸张时失败了。
要完全删除每个过滤器,只需用Cells.AutoFilter
替换第4 + 5行。