Очистка автофильтра Excel с использованием VBA - PullRequest
0 голосов
/ 02 июня 2019

Я использую этот код VBA для обновления всей книги в определенные промежутки времени. ( благодаря этой теме )

Как видите, в настоящее время он обновляется каждые 60 минут.

Public RunWhen As Double
Public Const cRunIntervalMinutes = 60
Public Const cRunWhat = "Workbook_RefreshAll"

Sub StartTimer()
    RunWhen = Now + TimeSerial(0, cRunIntervalMinutes, 0)
    Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _
         schedule:=True
End Sub

Sub StopTimer()
   On Error Resume Next
   Application.OnTime earliesttime:=RunWhen, _
       procedure:=cRunWhat, schedule:=False
End Sub

Sub Workbook_RefreshAll()
    Application.CalculateFullRebuild
    ActiveWorkbook.RefreshAll
    Call StartTimer
End Sub

Код работает отлично, но есть одна вещь, которую я хотел бы сделать:

  1. Каждый раз, когда лист открывается, и / или
  2. Каждый раз, когда этот код VBA выполняет процесс обновления листа

Мне бы хотелось, чтобы автофильтр был "очищен" (не отключен или не выключен), как показано на скриншоте ниже:

Очистка автофильтра

Заранее благодарим за любую помощь.

Приветствия

1 Ответ

0 голосов
/ 02 июня 2019

Это должно сработать.Конечно, вы можете сделать это только для одного листа, если хотите.

Sub Workbook_RefreshAll()
Dim sh As Worksheet
    Application.CalculateFullRebuild
    ActiveWorkbook.RefreshAll
    For Each sh In ActiveWorkbook.Worksheets
        If Not (sh.AutoFilter Is Nothing) Then sh.AutoFilter.ShowAllData
    Next sh
    Call StartTimer
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...