Объект AutoFilter (Excel)
Представляет автофильтровку для указанного листа.
Примечание.
При использовании автофильтра с датами формат должен соответствовать разделителям дат на английском языке ("/") вместо локальных параметров ("."). Допустимая дата будет "2/2/2/2007", тогда как "2.2.2007" является недопустимой.
Примечание.
Для работы с объектами (например, объектом Interior ) требуется добавить ссылку на объект . Дополнительные сведения о назначении ссылки на объект переменной или свойству см. в инструкции Set .
Пример
Используйте свойство AutoFilter объекта Worksheet , чтобы вернуть объект AutoFilter . Используйте свойство Filters для возврата коллекции отдельных фильтров столбцов. Используйте свойство Range , чтобы вернуть объект Range , представляющий весь отфильтрованный диапазон.
В следующем примере сохраняются критерии адреса и фильтрации для текущей фильтрации, а затем применяются новые фильтры.
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
Чтобы создать объект AutoFilter для листа, необходимо включить автоматическое фильтрацию для диапазона на листе вручную или с помощью метода AutoFilter объекта Range . В следующем примере используются значения, хранящиеся в переменных уровня модуля в предыдущем примере, для восстановления исходной автофильтрации на листе Crew.
Sub RestoreFilters()
Set w = Worksheets("Crew")
w.AutoFilterMode = False
For col = 1 To UBound(filterArray(), 1)
If Not IsEmpty(filterArray(col, 1)) Then
If filterArray(col, 2) Then
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1), _
Operator:=filterArray(col, 2), _
Criteria2:=filterArray(col, 3)
Else
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1)
End If
End If
Next
End Sub
Методы
Свойства
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по