Объект 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 и обратная связь.