Objeto AutoFilter (Excel)

Representa el autofiltro de la hoja de cálculo especificada.

Nota:

Cuando use AutoFilter con fechas, el formato debe ser coherente con los separadores de fechas en inglés ("/") en lugar de con la configuración local ("."). "2/2/2007" sería una fecha válida sería, pero "2.2.2007" no.

Nota:

Trabajar con objetos (por ejemplo, el objeto Interior ) requiere agregar una referencia a un objeto . Encontrará más información sobre cómo asignar una referencia de objeto a una variable o propiedad en la instrucción Set .

Ejemplo:

Use la propiedad AutoFilter del objeto Worksheet para devolver el objeto AutoFilter . Use la propiedad Filters para devolver una colección de filtros de columnas individuales. Use la propiedad Range para devolver el objeto Range que representa todo el rango filtrado.

En el ejemplo siguiente se almacenan los criterios de dirección y filtrado para el filtrado actual y, a continuación, se aplican nuevos 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 crear un objeto AutoFilter para una hoja de cálculo, debe activar el autofiltro para un rango de la hoja de cálculo, ya sea manualmente o mediante el método AutoFilter del objeto Range . En el siguiente ejemplo se usan los valores almacenados en variables de módulos del ejemplo anterior para restablecer el autofiltro inicial en la hoja de cálculo 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 

Métodos

Propiedades

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.