AW: Zellen nach Datum schützen
06.06.2010 11:29:34
Oberschlumpf
Hi #Name?
Klick im VBA-Editor im Projekt-Explorer doppelt auf "DieseArbeitsmappe" und füge diesen Code in das Fenster ein, über dem 2 Comboboxen sichtbar sind:
Private Sub Workbook_Open()
Dim liRow As Integer, liShCount As Integer
For liShCount = 1 To ThisWorkbook.Sheets.Count
With Sheets(liShCount)
.Unprotect "test"
.Range("A1" & ":A" & .Cells(Rows.Count, 1).End(xlUp).Row).Locked = False
For liRow = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Range("A" & liRow).Value
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel _
As Boolean)
If Target.Column = 1 And Target.Locked = True Then
If InputBox("Geben Sie das Passwort zum Ändern geschützter Zellen ein:", "Passwort _
erforderlich") = "test" Then
ActiveSheet.Unprotect "test"
Target.Locked = False
End If
End If
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Column = 1 And Target.Locked = False Then
Target.Locked = True
ActiveSheet.Protect "test"
End If
End Sub
Erklärung:
Workbook_Open
Jedes Mal,wenn jemand die Datei öffnet, wird in jedem Tabellenblatt (du hast ja nur 12, wie du schreibst) die Spalte A mit den Datumseinträgen geprüft.
Wenn das darin stehende Datum kleiner ist als das aktuelle Datum, wird die Zelle für weitere Eingaben gesperrt. Jedes Tabellenblatt erhält einen Blattschutz mit dem Passwort test.
SheetBeforeDoubleClick
Die Sperre einer Zelle mit altem Datum lässt sich nur deaktivieren, wenn du in diese Zelle doppelt klickst.
Einfach nur den Wert überschreiben, funktioniert nicht, da das Blatt ja geschützt ist.
Also:
- Doppelklick in gewünschte Zelle in Spalte A
- es erscheint eine Inputbox, die die Eingabe eines Passwortes verlangt. Passwort = test
- danach wird die Zelle freigegeben und du kannst den alten Wert überschreiben.
SheetChange
- nach Verlassen der Zelle (egal ob Wert geändert oder nicht) wird die Zelle wieder gesperrt
ganz wichtig!!!
Du musst in jedem Tabellenblatt jede Zelle, die immer veränderbar sein soll, über Format/Zellen/Schutz die Option "Gesperrt" deaktivieren!!
Wenn du das nicht tust, kannst du bei aktiviertem Blattschutz keine gesperrte Zelle mehr verändern.
Und die oben beschriebene Option ist standardmäßig immer aktiviert.
Und natürlich solltest du auch den Zugriff auf den VBA-Code mit Passwort schützen.
Überall in diesem Code wird das Passwort test verwendet.
Das kannst/solltest du naürlich ändern.
Hilfts denn?
Ciao
Thorsten