Anzeige
Archiv - Navigation
1340to1344
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zelle sperren, wenn bestimmter Wert eingetragen

Zelle sperren, wenn bestimmter Wert eingetragen
18.12.2013 12:03:19
Sören
Hallo Forengemeinde,
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) '

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle sperren, wenn bestimmter Wert eingetragen
18.12.2013 15:32:25
Sören
Hallo zusammen,
anscheinend habe ich das Problem gelöst, zumindest haben die ersten Testeinträge ein positives Ergebnis mit sich gebracht.
Etwas abgespeckt der Code :)

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
For Each rngArea In Target.Areas
For Each rngZelle In rngArea.Cells
lngZ = lngZ + 1
If rngZelle.Locked = False Then
If rngZelle.Offset(0, -1).Value  "x" And Worksheets("Termine").chkPS = True  _
Then
rngZelle = WertAktuell(lngZ)
Else
Application.Undo
End If
End If
Next rngZelle
Next rngArea
rngAZ.Activate
Ende:
Application.EnableEvents = True
End Sub
Gruß
Anzeige

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige