[英]Remove filters from ALL Excel Tables VBA
我正在創建一些Excel加載項來為我們的用戶完成一些基本任務。 我們有一個電子表格可提供給我們每個項目的用戶。 他們使用這些電子表格對可配置項進行更改,然后再處理向SQL數據庫的轉換。 當他們完成電子表格時,通常他們會忘記取消隱藏行,列和/或刪除過濾器。 我想創建一個宏,該宏可以運行以取消隱藏每個工作表中的行/列,並清除每個ListObject中的過濾器。 這是我嘗試使用的代碼:
Sub RemoveFiltersUnhide()
Dim i As Long
Application.ScreenUpdating = False
For i = 1 To ThisWorkbook.Worksheets.Count
ThisWorkbook.Worksheets(i).AutoFilterMode = False
ThisWorkbook.Worksheets(i).Rows.Hidden = False
ThisWorkbook.Worksheets(i).Columns.Hidden = False
Next i
Application.ScreenUpdating = True
End Sub
該代碼可用於取消隱藏每個工作表上的行/列,但不會清除過濾器。 由於每個提供的工作簿將有所不同,並且將不包含相同的工作表或列表對象,因此我不知道如何遍歷每個表。 有人對我該如何處理有任何想法嗎?
工作的VBA:
Sub RemoveFiltersUnhide()
Dim ws As Worksheet, lo As ListObject
Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Worksheets
ws.Rows.Hidden = False
ws.Columns.Hidden = False
For Each lo In ws.ListObjects
lo.AutoFilter.ShowAllData
Next
Next
Application.ScreenUpdating = True
End Sub
如果此處提供的語法正確,則以下方法應該起作用。
Dim Sheet As Excel.Worksheet, List As Excel.ListObject
For Each Sheet In ThisWorkbook.Sheets
For Each List In Sheet.ListObjects
List.AutoFilter.ShowAllData
Next
Next
該代碼將是這樣的。
Sub RemoveFiltersUnhide()
Dim i As Long
Dim Ws As Worksheet
Application.ScreenUpdating = False
For Each Ws In Worksheets
With Ws
If .FilterMode Then
.ShowAllData
End If
.Rows.Hidden = False
.Columns.Hidden = False
End With
Next Ws
Application.ScreenUpdating = True
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.