bloccare filtro automatico
Hai un problema con Excel? 
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
|
Vuoi Approfondire?