Zellen automatisch sperren
#1
Hallo Zusammen,

ich habe eine Tabelle zur Erfassung von Verbräuchen erstellt.
Im Tabellenblatt "Salz-Sole-Verbrauch" werden in den Spalten C:T und V:AD die Verbräuche für Salz bzw. Sole und die gefahrenen km eingetragen.

Da mindestens 24 Kollegen auf die Tabelle zugreifen können, sind die Zellen, welche keine Eingabe erfordern, mit einem Passwort gesperrt.

In der Spalte A ist das Datum vom 01.11.2021 - 10.04.2022 eingetragen. 
Nun wäre es schön, dass nach dem Speichern die Tage schreibgeschützt sind (die ganzen Zeilen), die in der Vergangenheit liegen. 

Z.B. heute ist der 18.11.2021, da sollen alle Tage vom 01.11.2021 - 16.11.2021 gesperrt sein. 
Wenn heute der 25.02.2022 ist, dann sollen alle Zeilen vom 01.11.2021 - 23.02.2022 gesperrt sein.

Der "gestrige Tag" soll immer noch ungeschützt bleiben.

Der Schutz soll unabhängig von der Eingabe erfolgen. Nachträgliche Eingaben erfolgen nur durch den Administrator.

Ich hoffe Ihr könnt mir helfen.

Vielen Dank schonmal im Voraus.

PS. Das Passwort lautet: "Passwort112021"


Angehängte Dateien
.xlsx   WD_Meldung_AM_Döbeln_2021_2022_V2.2.xlsx (Größe: 222,41 KB / Downloads: 4)
Antworten Top
#2
Hallo,

sowas würdest Du nur mit VBA-Makros hinbekommen und dabei dann ggf. Mehrfachzugriffe berücksichtigen.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#3
Hallo

dieses Makro im VBA Editor in das Tabellenblatt Salz-Sole-Verbrauch eintragen, dann sollte alles funktionieren wie gewünscht.

mfg Gast 123

Code:
Dim rfind As Range, Zeile As Long

Private Sub Worksheet_Change(ByVal Target As Range)
If InStr(Target.Address, ":") Then Exit Sub
If Target.Value = Empty Then Exit Sub

    If Day(Date) < 2 Then Exit Sub
    Set rfind = Columns(1).Find(CDate(Date - 2))
   
    If Not rfind Is Nothing Then
       ActiveSheet.Unprotect "Passwort112021"
       Zeile = rfind.Cells(1, 1).Row
       Rows("5:" & Zeile + 3).Locked = True
       ActiveSheet.Protect "Passwort112021"
    Else
       MsgBox CDate(Date - 2) & " - Datum in Tabelle nicht gefunden"
    End If
End Sub

Das Makro ist im Beispiel getestet, die letzten zwei Tage bleiben zum bearbeiten immer frei.  Es beginnt auch erst ab dem dritten Tag zu wirken!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste