Condividi tramite

AutoFilterMode

Anonimo
2017-03-01T16:35:22+00:00

Ciao,

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?

Grazie per il supporto

S.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

6 risposte

Ordina per: Più utili
  1. Anonimo
    2017-03-03T09:38:50+00:00

    Ciao Darth_Pig,

    DropBox è bloccato dall'ufficio. Provo a scaricarlo a casa. Saprò dirti solo lunedì se funziona.

    Bene. A lunedì!

    Buon fine settimana.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-03-03T09:32:50+00:00

    Ciao Norman, 

    DropBox è bloccato dall'ufficio. Provo a scaricarlo a casa. Saprò dirti solo lunedì se funziona.

    Grazie

    S.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-03-03T09:12:17+00:00

    Ciao Darth_Pig,

    Non riesco a pulire il foglio (ha connessione a SQL, Hyperlink, Form etc), ma posto qui sotto immagine di una fase del Debug in cui si vede che sono nel foglio "Chiuse" (è selezionato e anche sh.Name lo conferma), il filtro è presente (intestazioni in blu) ma l'AutoFilterMode mi restituisce false. Stesso identico comportamento anche per il foglio "Attive".

    Posso solo ripetere:

    Anche se credo che il codice possa essere migliorato, non mi aspetterei il comportamento indicato da te.

    [cut]

    Se la tua esperienza sia diversa, credo che ci sia altro codice influente, oppure qualcosa di particolare con il tuo file.

    Potresti scaricare il mio file di prova DarthPig20170303.xlsm a:

    https://www.dropbox.com/s/uykir0dgozet59u/DarthPig20170303.xlsm?dl=0

    Prova a modificarlo per assomigliare il tuo scenario e, soprattutto, prova a replicare il comportamento problematico - io non ci riesco!

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-03-03T08:31:16+00:00

    Ciao Norman,

    grazie per la risposta.

    Non riesco a pulire il foglio (ha connessione a SQL, Hyperlink, Form etc), ma posto qui sotto immagine di una fase del Debug in cui si vede che sono nel foglio "Chiuse" (è selezionato e anche sh.Name lo conferma), il filtro è presente (intestazioni in blu) ma l'AutoFilterMode mi restituisce false. Stesso identico comportamento anche per il foglio "Attive".

    Grazie

    S.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-03-01T17:13:35+00:00

    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

    La risposta è stata utile?

    0 commenti Nessun commento