Как повторно применить фильтр данных программно? - PullRequest
2 голосов
/ 06 сентября 2011

Мне нужно повторно применить фильтр при изменении каких-либо данных на листе.Excel требует сделать это вручную.Как я могу повторно применить фильтр программно?

Ответы [ 2 ]

3 голосов
/ 06 сентября 2011

Я думаю, что самый простой способ - удалить автофильтр и повторно применить его благодаря этому виду VBA-кода (вы, вероятно, можете адаптировать его к VSTO?):

Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String

Sub ChangeFilters()

Set w = Worksheets("Crew")
With w.AutoFilter
    currentFiltRange = .Range.Address
    With .Filters
        ReDim filterArray(1 To .Count, 1 To 3)
        For f = 1 To .Count
            With .Item(f)
                If .On Then
                    filterArray(f, 1) = .Criteria1
                    If .Operator Then
                        filterArray(f, 2) = .Operator
                        filterArray(f, 3) = .Criteria2
                    End If
                End If
            End With
        Next
    End With
End With

w.AutoFilterMode = False
w.Range("A1").AutoFilter field:=1, Criteria1:="S"

End Sub

Код найден на MSDN

[РЕДАКТИРОВАТЬ] Вы также можете найти некоторую ценную информацию в этой теме: Изменение порядка столбцов таблицы Excel с неповрежденными фильтрами (см. Комментарии)

0 голосов
/ 22 ноября 2015

Когда древовидное представление используется в фильтре поля даты, его критерии не могут быть определены.Вот почему вам потребуется временное настраиваемое представление для повторного применения фильтра.Смотрите этот пост .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...