Hallo Einblatt,
das kann eigentlich nicht sein. Bei mir klappts doch auch. Kann aber auch an meiner schon etwas älteren Excel-Version liegen. Hast du den Code auch wirklich in das Modul Diese Arbeitsmappe gelegt? Sind bei dir Makros überhaupt aktiviert, sodass der Code auch ausgeführt wird? Hast du die Arbeitsmappe als xlsm gespeichert, sodass der Code auch in der Datei erhalten bleibt?
Im Prinzip sorgt die Zeile Sh.Cells.Locked = True dafür, dass sämtliche Zellen auf gesperrt umgeschaltet werden. Auch diejenigen, welche zum Startzeitpunkt nicht gesperrt sind. Wenn das bei dir nicht so ist, dann stimmt irgendwas mit der IF-Abfrage nicht. Lass spaßeshalber mal die darüberstehende IF-Zeile und das zugehörige End IF einfach weg und Probiers nochmal.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Datum As Range
Set Datum = Sh.Range("D5")
If IsDate(Datum) And Datum < Date Then
Sh.Unprotect "Passwort"
Sh.Cells.Locked = True
Sh.Protect password:="Passwort"
If Sh.ProtectContents Then
Do
Passwort = InputBox("Diese Tabelle ist älter als heute und somit vor Eingabe geschützt. " _
& "Geben Sie das Passwort ein, um die Tabelle zu entschützen.")
If Passwort <> "" Then
On Error GoTo Fehler
Sh.Unprotect Passwort
On Error GoTo 0
End If
Loop Until Not Sh.ProtectContents Or Passwort = ""
End If
End If
Exit Sub
Fehler:
MsgBox "Das eingegebene Passwort ist ungültig"
Resume Next
End Sub
Das Passwort in "Passwort" musst du natürlich auch anpassen. Wenns dann immer noch nicht klappt liegts wohl doch an den verschiedenen Versionen. Zeichne mit dem Makrorekorder das Schützen und Entschützen des Tabellenblattes mal auf und poste den Code hier. Dann kann ich dir vielleicht noch weiterhelfen.
Gruß Mr. K.
|