bloccare filtro automatico



  • bloccare filtro automatico
    di biagicus (utente non iscritto) data: 04/11/2016 13:49:16

    Salve ragazzi ho una cartella excel costituito da un foglio (avvio) tramite il quale genero uno userneme pubblic e un gruppo pubblic. quindi un secondo foglio su cui ho costruito una tabella del tipo. Ora vorrei che l'utente giovanni possa usare il filtro automatico selezionando solo primo. In poche parole voglio vincolare l'uso del filtro al singolo utente.
    Avete idee thanks

    interno piano nome utente
    10 primo biagio
    10 primo giovanni
    11 secondo francesco
    12 secondo maresciallo


  • selectionchange
    di biagicus (utente non iscritto) data: 14/11/2016 14:12:58

    Ho risolto sfruttando l'evento Worksheet_SelectionChange
    ho definito la variabile ua alla selezione del foglio impostandola come criterio (criteria1) del filtro sulla colonna 9 nel mio caso.
    Quindi quando il criteria1 viene cambiato, o anche se il filtro è tolto, automaticamente dopo avviso viene ripristinato il filtro sul valore iniziale. Insomma il filtro si può anche usare con selezioni diverse, ma all'atto di selezionare una qualsiasi cella, viene ripristinata la condizione iniziale, risultando di fatto bloccato.


     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If ua = "" Then Exit Sub
        If Sheets("generale").ProtectContents = False Then
            If Sheets("generale").AutoFilterMode = True Then
                On Error Resume Next
                If Sheets("generale").AutoFilter.Filters.Item(9).Criteria1 <> "=" & ua Then
                    MsgBox ("RIPRISTINO FILTRO SU VALORE INIZIALE " & ua)
                    Sheets("generale").Range("$A$1:$AE$3443").AutoFilter Field:=9, Criteria1:=ua
                End If
            Else
                MsgBox ("RIPRISTINO FILTRO SU VALORE INIZIALE " & ua)
                Sheets("generale").Range("$A$1:$AE$3443").AutoFilter
                Sheets("generale").Range("$A$1:$AE$3443").AutoFilter Field:=9, Criteria1:=ua
            End If
        End If
    End Sub
    


  • aggiornamento con filtro a più criteri
    di biagicus (utente non iscritto) data: 15/11/2016 14:55:29

    la macro che ho inserito non contempla il caso che ci siano più criteri sullo stesso filtro attivi. Ho perciò pensato di modificarla così
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim c1, c2
        If ua = "" Then Exit Sub
           If Sheets("generale").AutoFilterMode = True Then
                On Error Resume Next
                If ActiveSheet.AutoFilter.Filters.Item(9).On Then
                    c1 = Right(ActiveSheet.AutoFilter.Filters.Item(9).Criteria1, Len(ActiveSheet.AutoFilter.Filters.Item(9).Criteria1) - 1)
                    If ActiveSheet.AutoFilter.Filters.Item(9).Operator Then
                    c2 = Right(ActiveSheet.AutoFilter.Filters.Item(9).Criteria2, Len(ActiveSheet.AutoFilter.Filters.Item(9).Criteria2) - 1)
                    End If
                End If
                If c1 <> ua Then
                    MsgBox "RIPRISTINO FILTRO SU VALORE INIZIALE " & ua & vbCrLf & "PER VISUALIZZARE UN'ATRA UNITA' ANALITICA TORNARE SU LOGIN E SELEZIONARE UNA NUOVA UNITA' ANALITICA", vbCritical
                    Sheets("generale").Unprotect Password:="reg01"
                    Sheets("generale").Range("$A$1:$AE$3443").AutoFilter Field:=9, Criteria1:=ua
                    Sheets("generale").Columns("K:V").Locked = False
                    Sheets("generale").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
                        , AllowFiltering:=True, Password:="reg01"
                    Range("I1").Select
                    Exit Sub
                End If
                If c2 <> "" Then
                    MsgBox "RIPRISTINO FILTRO SU VALORE INIZIALE " & ua & vbCrLf & "PER VISUALIZZARE UN'ATRA UNITA' ANALITICA TORNARE SU LOGIN E SELEZIONARE UNA NUOVA UNITA' ANALITICA", vbCritical
                    Sheets("generale").Unprotect Password:="reg01"
                    Sheets("generale").Range("$A$1:$AE$3443").AutoFilter Field:=9, Criteria1:=ua
                    Sheets("generale").Columns("K:V").Locked = False
                    Sheets("generale").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
                        , AllowFiltering:=True, Password:="reg01"
                    Range("I1").Select
                End If
        End If
    End Sub