删除工作簿中的每个表的filter,VBA

我试图写一块,将sorting通过每个工作表中的每个表在活动工作簿中,并重置所有的filter,但似乎我得到一些对象错误。 谁能帮我指出这是为什么? 请注意,每个表是一个数据透视表。

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行收到错误:“对象不支持此属性或方法”。

假设你的意思是清除filter并删除sorting,你可以使用:

 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是引用这些东西的属性: Excel表格中的AutoFilter下拉框的屏幕截图

(我会刚刚评论其他的答案,但我需要50“名誉”-_-)