Zelle sperren, wenn bestimmter Wert eingetragen
18.12.2013 12:03:19
Sören
ich habe mal wieder ein Problem bzgl. einer Excel Tabelle, die bei uns als Terminliste genutzt wird.
Die Tabelle ist mit einem Blattschutz versehen, welcher über eine Checkbox (chkPS) gesteuert wird. Ist der Haken drin, ist der Blattschutz aktiviert.
Ein Terminblock ist wie folgt aufgebaut (Zellen beispielhaft):
Zelle AA = Wert zwecks Einfärbung (bedingte Formatierung), ob Termin im roten/gelben/grünen Bereich
Zelle AB = der Termin an sich
Zelle AC = Differenz zum vorherigen Termin bei Änderung
Die Zelle AB ist nicht durch den Blattschutz geschützt, da die Bearbeiter den Termin ändern können sollen. Es sei denn, der Termin ist als bearbeitet deklariert, dann wird in Zelle AA ein x geschrieben.
Sobald in Zelle AA ein x steht, möchte ich die Zelle AB geschützt haben, also kann der dort eingetragene Termin nicht mehr geändert werden.
Kann mir jemand dabei helfen?
Ich habe schon ein Code ausprobiert, dieser hilft mir aber nicht weiter:
Private Sub Workbook_SheetChange(ByVal Tabellenblatt As Object, ByVal Target As Excel.Range)
'Zellen mit Formeln werden vor Überschreiben
'geschützt, ohne den Blattschutz aktivieren zu müssen
Dim WertAktuell()
Dim rngArea As Range
Dim rngAZ As Range
Dim rngZelle As Range
Dim lngZ As Long
Set rngAZ = ActiveCell
On Error GoTo Ende
Application.EnableEvents = False
Select Case Tabellenblatt.Name
Case "Tabelle8", "Tabelle9" 'diese Tabellenblätter stehen hier nur als Dummy falls dies spä _
ter gebraucht wird..
'die Formeln dieser Tabellen werden nicht geschützt
Case Else
'die Auswahl ließe sich durch das Entfernen von 'Case Else' umkehren
ReDim WertAktuell(1 To Target.Cells.Count)
For Each rngArea In Target.Areas
For Each rngZelle In rngArea.Cells
lngZ = lngZ + 1
WertAktuell(lngZ) = rngZelle.Value
Next rngZelle
Next rngArea
lngZ = 0
'BLATTSCHUTZ ohne BLATTSCHUTZ:
If Worksheets("Termine").chkPS = True Then
Application.Undo ' "x" And Worksheets("Termine").chkPS = True _
Then
rngZelle = WertAktuell(lngZ) '