Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim xSheet As Worksheet Dim xPsw As String xPsw = "XXXYYYZZZ" For Each xSheet In Worksheets xSheet.Protect xPsw Next End Sub
wird beim Schließen der Excel-Datei der Blattschutz automatisch aktiviert.
Ich möchte nun aber für User die das Passwort nicht kennen die Möglichkeit einrichten, dass diese trotzdem die Filterfunktion nutzen können.
was waere wenn ... du für User seine versteckte Tabelle anlegst, oder in einer versteckten Tabelle ein Textfeld erstellt, das du von der Grösse her auf Null setzen kannst, und dir dort für jeden User sein eigenes Passwort notierst? Da fühlt sich jeder geschmeichelt, und per VBA kannst du das Passwort auswerten um den Blattschutz gezielt aufzuheben.
das bringt mir nicht viel. Es gibt mittlerweile ca. 2.000 Zeilen und ca. 60 User. Von diesen haben ca. 10 das Passwort, die anderen schauen die Liste nur an, sollen aber auch filtern können.
das macht man aber beim Öffnen der Datei und nicht beim Schließen.
Code:
Private Sub Workbook_Open() Dim xPsw As String, xSheet As Worksheet
xPsw = "XXXYYYZZZ"
For Each xSheet In ThisWorkbook.Worksheets xSheet.Protect xPsw xSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True Next