Objeto AutoFilter (Excel)

Representa a filtragem automática para a planilha especificada.

Observação

Quando você usar AutoFilter com datas, o formato deverá ser consistente com os separadores de data em inglês ("/") em vez de com as configurações locais ("."). Uma data válida seria "2/2/2007", enquanto "2.2.2007" é inválida.

Observação

Trabalhar com objetos (por exemplo, o objeto Interior) requer a adição de uma referência a um objeto. Você encontrará mais informações sobre como atribuir uma referência de objeto a uma variável ou propriedade na instrução Set.

Exemplo

Use a propriedade AutoFilter do objeto Worksheet para retornar o objeto AutoFilter. Use a propriedade Filters para retornar uma coleção de filtros de coluna individuais. Use a propriedade Range para retornar o objeto Range que representa todo o intervalo filtrado.

O exemplo a seguir armazena o endereço e os critérios de filtragem para a filtragem atual e aplica novos filtros.

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

Para criar um objeto AutoFilter para uma planilha, você deve ativar o filtro automático para um intervalo na planilha manualmente ou usando o método AutoFilter do objeto Range. O exemplo a seguir usa os valores armazenados em variáveis no nível do módulo no exemplo anterior para restaurar a filtragem automática original para a planilha Equipe.

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 

Métodos

Propriedades

Confira também

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.