/ / ¿Cómo volver a aplicar el filtro de datos mediante programación? - excel, vba, vsto

¿Cómo volver a aplicar el filtro de datos mediante programación? - excel, vba, vsto

Necesito volver a aplicar el filtro cuando cambia cualquier dato en la hoja de trabajo. Excel requiere hacer esto manualmente. ¿Cómo puedo volver a aplicar el filtro programáticamente?

Respuestas

3 para la respuesta № 1

Creo que la manera más fácil es eliminar el auto-filtro y volver a aplicarlo gracias a este tipo de código VBA (¿probablemente puede adaptarlo a VSTO?):

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

Código encontrado en MSDN

[EDIT] También puedes encontrar información valiosa en este hilo: Reordenando columnas de tabla de Excel con filtros intactos (mira los comentarios)


0 para la respuesta № 2

Cuando treeview se usa en el filtro de un campo de fecha, no se pueden determinar sus criterios. Es por eso que necesitará una vista personalizada temporal para volver a aplicar el filtro. Consulte esta publicación.