Hallo Einblatt,
das ist m. W. leider nicht möglich. Dies ist ein Standardtext der immer kommt, wenn man in einem gesperrten Blatt eine Eingabe versucht. Du kannst aber den Code wie folgt ersetzen. Dann kommt bei jedem Eingabeversuch nicht die Standardmeldung sondern der von dir festgelegte Text in der Inputbox samt Passwortabfrage. Wie gesagt, gehört der Code in das Modul DieseArbeitsmappe
Private Sub Workbook_Open()
Workbook_SheetActivate ActiveSheet
End Sub
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
Meldung
End If
End If
End Sub
Sub Meldung()
Dim k As Integer, Passwort As String
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
ActiveSheet.Unprotect Passwort
On Error GoTo 0
End If
Loop Until Not ActiveSheet.ProtectContents Or Passwort = ""
If Passwort = "" Then
For k = 1 To 255
Application.OnKey "{" & k & "}", "DieseArbeitsmappe.Meldung"
Next k
Else
For k = 1 To 255
Application.OnKey "{" & k & "}"
Next k
End If
Exit Sub
Fehler:
MsgBox "Das eingegebene Passwort ist ungültig"
Resume Next
End Sub
Zur Erklärung. Workbook Open wird beim Öffnen der Arbeitsmappe ausgeführt und schaltet bereits das aktive Blatt scharf, falls das Datum in D5 älter als heute ist. Sheet Activate wird beim Anklicken eines beliebigen Sheets ausgeführt und schaltet dieses scharf, sofern das Datum in D5 älter als heute ist. Außerdem wird in diesem Fall mithilfe von OnKey die Standardeingabe abgeschaltet, wodurch die Standardmeldung nicht mehr kommt. Stattdessen wird bei einem beliebigen Tastendruck (Eingabeversuch) das Makro Meldung ausgeführt wo du über Inputbox einen beliebigen Text zur Passwortabfrage hinterlegen kannst.
Entspricht das eher deinen Wünschen?
Gruß Mr. K.
|