Questa funzione, creata a suo tempo per altra discussione con Norman, memorizza tutti i paramentri presenti nei filtri di una tabella.
Function Parametri_Filtri_Tabella(sNomeFoglio, sNomeTabellaPrincipale As String) As Variant
Dim Ws As Worksheet
Dim arrFilters As Variant
Dim i As Long, iFilters As Long
Dim bAutoFilterMode As Boolean
Set Ws = ThisWorkbook.Worksheets(sNomeFoglio)
With Ws
With .ListObjects(sNomeTabellaPrincipale)
If .ShowAutoFilter Then
iFilters = .AutoFilter.Filters.Count
ReDim arrFilters(1 To iFilters, 1 To 3)
On Error Resume Next
For i = 1 To iFilters
With .AutoFilter.Filters(i)
If .On Then
arrFilters(i, 1) = .Criteria1
arrFilters(i, 2) = .Operator
arrFilters(i, 3) = .Criteria2
End If
End With
Next i
End If
End With
On Error GoTo 0
End With
Memorizza_Filtri_Tabella_Principale = arrFilters
End Function
In pratica viene creata una matrice con i parametri dei filtri di ogni colonna di una tabella.
Ad es. se la colonna della Data nella tabella è la prima avrai che la funzione
Parametri_Filtri_Tabella(NomeFoglio,NomeTabella)(1,1) restituisce il paramentro Criteria1
Parametri_Filtri_Tabella(NomeFoglio,NomeTabella)(1,2) restituisce il paramentro Operator
Parametri_Filtri_Tabella(NomeFoglio,NomeTabella)(1,3) restituisce il paramentro Criteria2
In una tabella il filtro puoi facilmente indiduarlo in base all'indice del nome della colonna della tabella.
Ad es. se l'intestazione fosse Data potresti passare alla prima dimensione della matrice restituita dalla funzione
Foglio.ListObjects(NomeTabella).ListColumns("Data").Index
Spero che la spiegazione non sia troppo poco comprensibile :)