dashalex
Goto Top

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

Content-Key: 578865

Url: https://administrator.de/contentid/578865

Printed on: May 9, 2024 at 09:05 o'clock

Member: BirdyB
BirdyB Jun 12, 2020 at 07:34:25 (UTC)
Goto Top
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
Member: DashAlex
DashAlex Jun 12, 2020 at 09:18:11 (UTC)
Goto Top
VBA noch weniger Erfahrung als mit Excel. Trotzdem versuch ich es mal heute am abend.
Komme gern auf dein Angebot zurück.
Danke erstmal!
Mitglied: 144260
144260 Jun 12, 2020 at 10:58:21 (UTC)
Goto Top
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
Member: DashAlex
DashAlex Jun 12, 2020 at 19:00:37 (UTC)
Goto Top
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.

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.
Mitglied: 144260
144260 Jun 12, 2020 updated at 20:59:39 (UTC)
Goto Top
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.
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.
Member: DashAlex
DashAlex Jun 13, 2020 at 06:26:35 (UTC)
Goto Top
Sorry! Wie bereits gesagt, habe ich gar keine Erfahrung mit VBA,insofern wird es schwierig mit dem "mitdenken". Jetzt weiß ich es und funkt 100%.
Ganz herzlichen Dank!