1.3k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich möchte in einer Tabelle die Möglichkeit haben, dass einzelne Zellen nach der
Eingabe durch ein Passwort gesperrt werden. Bei einer Änderung der Zelle soll
dann erst das Passwort in einem Inputfenster abgefragt werden. Bis jetzt habe ich
folgenden VBA Code dafür:

Private Sub Worksheet_Change(ByVal Target As Range)
'Code sperrt die Zelle, in die eine Eingabe gemacht wurde
Dim rngCell As Range
Set Target = Intersect(Target, Range("A1:I250"))
If Target Is Nothing Then Exit Sub
Me.Unprotect ("123")
For Each rngCell In Target
rngCell.Select
Selection.Locked = rngCell <> ""
Next
Me.Protect ("123")
End Sub

Dieser Code erfüllt schon die Anforderungen, aber bei einer Änderung der Tabelle
kommt ein Hinweis, dass die Zelle gesperrt ist. Danach muss ich dann erst mit
Rechtsklick auf das Tabellenblatt den Blattschutz entfernen.

Ich hoffe einer kann mir dabei helfen, wie dieser letzte Schritt einfacher geht.

1 Antwort

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

das Change-Ereignis kannst du hier nicht nutzen, da sich das Change-Ereignis direkt auf die vor dem Verlassen geänderte Zelle bezieht. Durch den Passwort-Schutz ist aber keine Änderung der Zelle möglich.

Eine Möglichkeit wäre, zu deinem Change-Ereignis noch ein BeforeDoubleClick-Ereignis zu nutzen. Dann musst du aber immer mit einem Doppelklick in die Zelle, die du bearbeiten willst. Ist diese leer, wird der Schutz automatisch aufgehoben, wenn nicht wird das Passwort abgefragt:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim strPasswort As String

If IsEmpty(Target) = True Then
Me.Unprotect ("123")
Else
strPasswort = InputBox("Bitte das Passwort eingeben:", "Arbeitsblattschutz aufheben")
Me.Unprotect (strPasswort)
End If
End Sub


Gruß

M.O.
...