В этом руководстве будет показано, как отключить / очистить автофильтры в VBA.
Автофильтры можно включить или выключить с помощью кода VBA.
Отключите автофильтр на активном листе в VBA
В следующем примере кода автофильтр отключается на активном листе, сначала проверяя, что он еще не отключен.
12345 | Public Sub KillFilter ()Если ActiveSheet.AutoFilterMode, тоActiveSheet.AutoFilterMode = FalseКонец, еслиКонец подписки |
Включите автофильтр на активном листе в VBA
В следующем примере кода включается автофильтр на активном листе, сначала проверяя, что он еще не включен.
12345 | Общедоступный подпункт StartFilter ()Если не ActiveSheet.AutoFilterMode, тоActiveSheet.Range ("A1"). АвтофильтрКонец, еслиКонец подписки |
Отключите автофильтр на всех листах в VBA.
В следующем примере кода выполняется цикл по каждому листу во всей книге и отключается автофильтр на каждом листе, сначала проверяя, что фильтр в текущей книге еще не включен.
12345678 | Публичная подпрограмма StopAllFilters ()Dim ws как рабочий листДля каждой страницы в ActiveWorkbook.WorksheetsЕсли ws.AutoFilterMode = True, тоws.AutoFilterMode = FalseКонец, еслиСледующий wsКонец подписки |
Отключите автофильтр на всех листах в VBA.
Точно так же в следующем примере кода выполняется цикл по всей книге и включается автофильтр на каждом листе, сначала проверяя, что фильтр в текущей книге еще не включен.
12345678 | Публичная подпрограмма StartAllFilters ()Dim ws как рабочий листДля каждой страницы в ActiveWorkbook.WorksheetsЕсли не ws.AutoFilterMode, тоws.Range ("A1"). АвтофильтрКонец, еслиСледующий wsКонец подписки |
Очистить все фильтры на активном листе в VBA
В следующем примере кода автофильтр остается включенным на активном листе, но очищаются все фильтры, примененные к данным.
12345 | Public Sub ClearFilter ()Если ActiveSheet.FilterMode = True, тоActiveSheet.ShowAllDataКонец, еслиКонец подписки |
Очистить все фильтры на всех листах в VBA
Точно так же в следующем примере кода выполняется цикл по всей книге и оставляет включенным автофильтр на каждом листе, если он уже включен, но очищает любой фильтр, примененный к данным.
12345678 | Публичная подпрограмма ClearAllFilters ()Dim ws как рабочий листДля каждой страницы в ActiveWorkbook.WorksheetsЕсли ws.FilterMode = True, тоws.ShowAllDataКонец, еслиСледующий wsКонец подписки |
Очистить все фильтры в таблице в VBA
Если наш рабочий лист содержит объект таблицы, мы можем настроить код, чтобы просто очистить любой фильтр, примененный к этому фильтру, оставив автофильтр включенным.
123456789 | Подложка ClearFilterFromTable ()Dim ws как рабочий листDim sTable As StringDim loTable как ListObjectsTable = "Таблица1"Установить ws = ActiveSheetУстановите loTable = ws.ListObjects (sTable)loTable.AutoFilter.ShowAllDataКонец подписки |
Если объект таблицы будет связан со сводной таблицей, то сводная таблица обновится соответствующим образом.