Объект AutoFilter (Excel)

Представляет автофильм для указанного таблицы.

Примечание

При использовании AutoFilter с датами формат должен соответствовать английским сепараторам дат ("/") вместо локальных параметров ("."). Допустимой датой будет "2/2/2007", а "2.2.2007" является недействительной.

Примечание

Работа с объектами (например, с объектом Interior ) требует добавления ссылки на объект. Дополнительные сведения о назначении объекта ссылкой на переменную или свойство можно найти в заявлении Set .

Пример

Чтобы вернуть объект AutoFilter, используйте свойство AutoFilter объекта Worksheet. Используйте свойство 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 и обратная связь.