Hallo,
1.
um den Blattschutz beim Masterpasswort wieder zu ersetzen, ergänze das Makro wie folgt:
If strBereich = "master" Then
'hier wird alles eingeblendet, wenn das Master-Passwort eingegeben wird
.Unprotect "123" 'Blattschutz aufheben
.UsedRange.EntireRow.Hidden = False 'gewählten Bereich einblenden
.Outline.ShowLevels RowLevels:=1 'Gliederung im Level1 einblenden
.Protect "123" 'Blattschutz wieder einrichten <- ERGÄNZEN
Else
(2.) Ich habe ja für jeden (nach meinem Verständnis) Spediteur einen Bereichsnamen pro Blatt vergaben (mit Ergänzung 1 bis 4, da eine Bereichsname nur einmal pro Mappe vergeben wird). Hat ein Spediteur mehrere Bereiche, so markiere die Spalte A der betreffenden Bereiche und vergib einen Namen (siehe im Namensmanager z.B. MM_BSH). Dann wird nach der Passworteingabe der gesamte definierte Namensbereich eingeblendet.
(6. ) Hast du einen neuen Spediteur musst für diesen den entsprechenden Bereich definieren (Namen definieren) und im Makro die Select-Case-Anweisung entsprechend erweitern (siehe auch Kommentierung im Makro).
Lösche also die Bereiche, die doppelt sind im Namenmanager, markiere die entsprechenden Zellen in Spalte A und vergib einen Namen. Das Makro musst du dann natürlich entsprechend anpassen.
(3.) Da ich selten mit Gruppierungen arbeitete, werde ich mir das noch mal anschauen.
(4.) Du hast nicht gesagt, dass der Bereich wieder ausgeblendet werden soll ;-).
Füge folgenden Code in das VBA-Projekt der Arbeitsmappe ein:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim arrBlatt
Dim z As Long
'Array mit den Arbeitsblättern, die angesprochen werden sollen
arrBlatt = Array("Mo.-Do.", "Fr.", "Sa.", "Feiertage")
For z = 0 To 3
With Worksheets(arrBlatt(z))
.UsedRange.EntireRow.Hidden = True
.Range("A1:A6").EntireRow.Hidden = False
End With
Next z
'Arbeitsmappe wird gespeichert
ThisWorkbook.Save
End Sub
(5) Ergänze den Workbook_Open-Code am Schluss um folgende Zeile:
Call einblenden
Gruß
M.O.