Verifica filtro attivo



  • Verifica filtro attivo
    di Claudio (utente non iscritto) data: 02/02/2016 21:09:51

    Salve !!!
    Come faccio a sapere tramite Vba se in una tabella in una colonna sono stati applicati dei filtri???? ( visivamente si vede perché viene visualizzato l'imbuto al posto della freccia)
    Grazie



  • di alfrimpa data: 02/02/2016 21:40:57

    Ciao Claudio

    Potresti provare con la macro qui sotto che, però, non ho potuto testare.

    Alfredo
     
    Sub macro1()
    If ActiveSheet.AutoFilterMode = True Then
         MsgBox "Il filtro è attivo"
    End If
    End Sub






  • di Claudio (utente non iscritto) data: 02/02/2016 22:05:08

    Gia provato e ActiveSheet.AutoFilterMode Mi dice sempre che è falso.
    Considera che la tabella è collegata ad Access tramite accesso guidato.



  • di Mohican1989 data: 02/02/2016 23:56:13

    Strano ho provato ora il codice di alfrimpa (che saluto) e sembra "funzionare" nel senso, se sono stati attivati dei filtri ma non specificati i criteri, autofilter mode risulta vero (attivo), se sono stati attivati filtri specificando criteri, autofiltermode risulta vero(attivo) se non ci sono filtri quindi non imbuti bensi neanche le freccettine prima di indicare i criteri, allora autofilter mode è off.



  • di Claudio (utente non iscritto) data: 03/02/2016 08:10:23

    A me interessa se sono stati applicati dei criteri no se ci sono i filtri !!!
    Pertanto se è stato applicato un criterio la funzione mi deve restituire vero se no falso.
    Grazie comunque



  • di Mohican1989 data: 03/02/2016 21:14:21

    Riporto codice non provato, a guardarlo sembra chiaro, non conosco bene i tipi di cella speciale ma penso che questo risolva. Da quello che leggo dopo aver definito l'area di filtro, verifica se le celle visibili sono inferiori alle celle cui si applica il filtro. Se è così ovviamente vi è un filtro attivo.

    Fai sapere
     
    Option Explicit
    
    '---------------------------------------------------------------------------------------
    ' Procedure : TestFiltered
    ' DateTime  : 10/10/2005 18:50
    ' Author    : royUK
    ' website   : www.excel-it.com
    ' Purpose   : Check if data is Filtered
    '---------------------------------------------------------------------------------------
    '
    Sub TestFiltered()
        Dim rngFilter As Range   
        Dim r As Long, f As Long
        Set rngFilter = ActiveSheet.AutoFilter.Range
        r = rngFilter.Rows.Count
        f = rngFilter.SpecialCells(xlCellTypeVisible).Count
        If r > f Then MsgBox "Data is Filtered"
    End Sub



  • di Claudio (utente non iscritto) data: 07/02/2016 09:59:46

    Grazie mille. Ottima soluzione !!!