Ciao Darth_Pig,
ho un foglio Excel con sotto questo codice che ho riutilizzato da una risposta ad altro utente:
Public Sub Main()
Foglio1.Select
ApplicaFiltro
......
End Sub
Public Sub ApplicaFiltro()
Dim sh As Worksheet
Set sh = ActiveSheet
If sh.AutoFilterMode = False Then Selection.AutoFilter
Set sh = Nothing
End Sub
Quando viene aperto il foglio, correttamente la sub applica il filtro.
Ad un secondo passaggio, però, dato che il filtro c'è, mi aspettavo di trovare sh.AutoFilterMode a True, invece è ancora a False, quindi toglie il filtro con il Selection.AutoFilter.
Dove sbaglio?
Anche se credo che il codice possa essere migliorato, non mi aspetterei il comportamento indicato da te.
La proprietà AutoFilterModedovrebbe sempre restituire il valore booleano
True se le frecce a discesa del Filtro automatico siano attualmente visualizzate sul foglio di interesse.
Nel primo passo, se non ci sia un filtro automatico sul foglio di interesse, la proprietà restituirà
False e, quindi, un filtro sarà creato; in un secondo passo, essendoci già un filtro in posto, la proprietà restituirebbe
True e il comando per creare o cancellare il filtro dovrebbe essere saltato.
Se la tua esperienza sia diversa, credo che ci sia altro codice influente, oppure qualcosa di particolare con il tuo file.
Quindi, ti chiederei gentilmente di caricare il file problematico, dopo averlo depurato dei dati sensibili, su un servizio di condivisione di file, per esempio Microsoft OneDrive o DropBox, e di postare un link al file in una risposta qui.
===
Regards,
Norman
