Zeilen Schützen wenn sie drei tage alt sind.

Bild

Betrifft: Zeilen Schützen wenn sie drei tage alt sind.
von: Stefan
Geschrieben am: 17.09.2015 14:13:12

Hallo ich habe folgendes Problem.
Ich suche einen Code der mir die Zeile schützt wenn in der A Spalte in gleicher Zeile das Datum älter ist als 3 Tage.
Also in den Zeilen 2 bis unendlich werden fortlaufend Ergebnisse eingetragen.Immer wenn ein ergebnis eingetragen wird, erscheint in Spalte A der betreffenden Zeile das aktuelle Datum. Also steht in Spalte A Fortlaufend ein anderes Datum. Wenn Die Ergebnisse älter als drei Tage sind, soll es die Zeile schützen und somit nachträgliche manipulation verhindern.
Zusätzlich soll aber Spalte A, G, I dauerhaft geschützt sein. bzw. beim start geschützt sein.
Ist das möglich?
Sorry es lässt sich immer so doof erklären was man will.
Ich hoffe es ist halbwegs verständlich.

Bild

Betrifft: AW: Zeilen Schützen wenn sie drei tage alt sind.
von: JoWE
Geschrieben am: 17.09.2015 15:05:47
Hallo Stefan,
alle Zellen sind standardmäßig mit der Eigenschaft "gesperrt" versehen (Zelle formatieren - Schutz). Die Sperre ist wirksam, wenn der Blattschutz gesetzt wird. Für Deinen Zweck ist zunächst für alle Zellen in die etwas eingetragen werden darf die Eigenschaft "gesperrt" aufzuheben.
Weiter benötigt Du ein Makro welches beim Eintreten des SelectionChange-Ereignisses die Daten in der Spalte A mit dem aktuellen Datum abgleicht und bei Zutreffen Deiner Bedingung für alle Zellen der betroffenen Zeilen die Eigenschaft "gesperrt" setzt. Dazu muss das Makro den Blattschutz setzen, dann die Änderungen vornehmen (die Eigenschaft "gesperrt" setzen) und schließlich den Blattschutz wieder aktivieren.
z.B. so:

'*******************************************************************************************
'Prozedur in der Tabelle
'*******************************************************************************************
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sh As Worksheet
    Dim rng As Range
    Dim PW As String
    PW = "passwort"
    Set sh = Worksheets("Tabelle1") 'anpassen
    Set rng = sh.Range("A2:A" & sh.Cells(sh.Rows.Count, 1).End(xlUp).Row)
    'on error got fRoutine
    With sh
        .Unprotect Password:="passwort"
        For Each ze In rng
            If ze.Value = Date - 3 Then
                .Rows(ze.Row).Locked = True
            End If
        Next
        .Protect Password:="passwort", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End With
    Exit Sub
'fRoutine:
    'hier eine Fehlerbehandlung einbauen
End Sub
Gruß
Jochen

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeilen Schützen wenn sie drei tage alt sind."