Zellen sperren
Hallo zusammen,
hab folgendes Problem:
ich möchte gern, dass
wenn in Zelle A1 irgendwas steht (egal was), dann sind die Zellen B1 und B2 gesperrt und umgekehrt, wenn in Zellen B1 oder B2 was steht, dann soll A1 gesperrt sein.
Meine Kenntnisse sind leider eher beschränkt. Mit Datenüberprüfung habe ich es gerade so geschafft, dass wenn A1 was steht, B1 gesperrt ist... reicht aber nicht.
Jemand eine Lösung für mich?!
Gruß DashAlex
hab folgendes Problem:
ich möchte gern, dass
wenn in Zelle A1 irgendwas steht (egal was), dann sind die Zellen B1 und B2 gesperrt und umgekehrt, wenn in Zellen B1 oder B2 was steht, dann soll A1 gesperrt sein.
Meine Kenntnisse sind leider eher beschränkt. Mit Datenüberprüfung habe ich es gerade so geschafft, dass wenn A1 was steht, B1 gesperrt ist... reicht aber nicht.
Jemand eine Lösung für mich?!
Gruß DashAlex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 578865
Url: https://administrator.de/forum/zellen-sperren-578865.html
Ausgedruckt am: 17.04.2025 um 04:04 Uhr
6 Kommentare
Neuester Kommentar
Moin,
wahrscheinlich kommst du um VBA nicht herum. Hast du Erfahrungen mit VBA?
Wenn ja:
Hier ist beschrieben, wie du auf die Änderung einer Zelle reagieren kannst:
https://docs.microsoft.com/de-de/office/troubleshoot/excel/run-macro-cel ...
Hier ist beschrieben, wie du Zellen sperrst:
https://docs.microsoft.com/de-de/office/vba/api/excel.range.locked
Die Logik, was wann greift musst du dann noch drumherum bauen.
Wenn es klemmt, sag nochmal Bescheid.
Viele Grüße
wahrscheinlich kommst du um VBA nicht herum. Hast du Erfahrungen mit VBA?
Wenn ja:
Hier ist beschrieben, wie du auf die Änderung einer Zelle reagieren kannst:
https://docs.microsoft.com/de-de/office/troubleshoot/excel/run-macro-cel ...
Hier ist beschrieben, wie du Zellen sperrst:
https://docs.microsoft.com/de-de/office/vba/api/excel.range.locked
Die Logik, was wann greift musst du dann noch drumherum bauen.
Wenn es klemmt, sag nochmal Bescheid.
Viele Grüße

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo EHandler
If Not Application.Intersect(Range("A1,B1,B2"), Target) Is Nothing Then
Application.EnableEvents = False
For Each cell In Target
Select Case cell.Address
Case "$A$1"
If cell.Value <> "" Then
ActiveSheet.Unprotect
Range("B1:B2").Locked = True
ActiveSheet.Protect
Else
ActiveSheet.Unprotect
Range("B1:B2").Locked = False
ActiveSheet.Protect
End If
Case "$B$1", "$B$2"
If Range("B1").Value <> "" Or Range("B2").Value <> "" Then
ActiveSheet.Unprotect
Range("A1").Locked = True
ActiveSheet.Protect
Else
ActiveSheet.Unprotect
Range("A1").Locked = False
ActiveSheet.Protect
End If
End Select
Next
End If
Application.EnableEvents = True
Exit Sub
EHandler:
Application.EnableEvents = True
MsgBox "Error:" & Err.Description, vbExclamation
End Sub

Zitat von @DashAlex:
Vielen Dank killpid.
Soweit funkitoniert es sehr gut, leider hatte ich vergessen zu erwähnen, dass die Zellen immer wieder benutzt werden.
Jetzt ist es so, sobald da was drin steht, kann ich es nicht mehr löschen und alle 3 Zellen sind gesperrt.
Nein. Hier getestet. Du musst natürlich das Sheet vorher einmalig vorbereiten, also alle drei Zellen manuell entsperren. Ab dann läuft alles automatisch.Vielen Dank killpid.
Soweit funkitoniert es sehr gut, leider hatte ich vergessen zu erwähnen, dass die Zellen immer wieder benutzt werden.
Jetzt ist es so, sobald da was drin steht, kann ich es nicht mehr löschen und alle 3 Zellen sind gesperrt.
Der Code darf nicht manuell ausgeführt werden sondern das ist eine Event-Prozedur des jeweiligen Sheets!
Also, die Zellen werden immer wieder verwendet, das Löschen des Eintrages und die erneute Benutzung müssen möglich sein, zu den selben Bedingungen wie oben beschrieben (wenn A1 ein Eintrag steht, sind B1 und B2 gesperrt, und umgekehrt, B1 und B2 müssen beide gleichzeitig nutzbar sein.
So funktioniert der Code oben auch. Du hast jetzt die Steilvorlage und darfst es selbst abändern wie du es eben brauchst. Bisschen musst du schon mitdenken, das ist hier ja kein Auftragsladen.Viel Erfolg. I'm out.