Zellen endgültig sperren in Excel
Hallo,
ich habe eine Excel-Datei, wo in mehrere Zeilen Einträge gemacht werden (in den Spalten A - Q).
Sobald in Spalte Q automatisch das Tagesdatum eingetragen wurde, soll die komplette Zeile gesperrt werden, sodass man beim nächsten Aufruf der Excel-Tabelle diese Zeile nicht mehr verändern kann (es sei denn, man entsperrt sie mit einem bestimmten Kennwort).
Das funktioniert über VBA-Code und funktioniert grundsätzlich sehr gut.
Hier mal die beiden VBA-Codes:
1) "Diese Arbeitsmappe":
2) "Tabelle 1" (also erstes Tabellenblatt):
Es handelt sich um Excel in der Version 2021 (aus dem MS 365 Business Premium Paket).
Mein Problem:
Manchmal muss ich nachträglich in den Tabellen noch etwas anpassen. Hierzu entsperre ich die Excel-Datei mit einem Kennwort und kann dann Änderungen (z.B. in einer Formel etc.) vornehmen.
Anschließend schütze ich die Arbeitsmappe wieder über "Blatt schützen" mit dem Kennwort.
Dabei fällt mir dann immer wieder auf, dass sich dann das Tagesdatum in Spalte "Q", welches automatisch eingetragen worden war, auf den aktuellen Tag ändert.
Aber genau das sollte ja eigentlich durch den Code verhindert werden.
Kann mir jemand von Euch sagen, wie ich die jeweiligen kompletten Zeilen... inkl. Spalte "Q" so sperren kann, dass man die Einträge wirklich nicht mehr verändern kann?
Falls ich mich nicht verständlich ausgedrückt habe... bitte einfach fragen
Grüße von
Yan
ich habe eine Excel-Datei, wo in mehrere Zeilen Einträge gemacht werden (in den Spalten A - Q).
Sobald in Spalte Q automatisch das Tagesdatum eingetragen wurde, soll die komplette Zeile gesperrt werden, sodass man beim nächsten Aufruf der Excel-Tabelle diese Zeile nicht mehr verändern kann (es sei denn, man entsperrt sie mit einem bestimmten Kennwort).
Das funktioniert über VBA-Code und funktioniert grundsätzlich sehr gut.
Hier mal die beiden VBA-Codes:
1) "Diese Arbeitsmappe":
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim objCell As Range
With Worksheets("Eingaben")
For Each objCell In Range("Q9:Q20")
If IsDate(objCell.Value) Then objCell.EntireRow.Locked = True
Next
End With
End Sub
2) "Tabelle 1" (also erstes Tabellenblatt):
Option Explicit
Private Sub Worksheet_Calculate()
Dim objCell As Range
For Each objCell In Range("O9:O20")
With objCell
If .Text = "OK" Then _
If Not IsDate(.Offset(0, 2).Value) Then .Offset(0, 2).Value = Date
End With
Next
End Sub
Es handelt sich um Excel in der Version 2021 (aus dem MS 365 Business Premium Paket).
Mein Problem:
Manchmal muss ich nachträglich in den Tabellen noch etwas anpassen. Hierzu entsperre ich die Excel-Datei mit einem Kennwort und kann dann Änderungen (z.B. in einer Formel etc.) vornehmen.
Anschließend schütze ich die Arbeitsmappe wieder über "Blatt schützen" mit dem Kennwort.
Dabei fällt mir dann immer wieder auf, dass sich dann das Tagesdatum in Spalte "Q", welches automatisch eingetragen worden war, auf den aktuellen Tag ändert.
Aber genau das sollte ja eigentlich durch den Code verhindert werden.
Kann mir jemand von Euch sagen, wie ich die jeweiligen kompletten Zeilen... inkl. Spalte "Q" so sperren kann, dass man die Einträge wirklich nicht mehr verändern kann?
Falls ich mich nicht verständlich ausgedrückt habe... bitte einfach fragen
Grüße von
Yan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6541280785
Url: https://administrator.de/forum/zellen-endgueltig-sperren-in-excel-6541280785.html
Ausgedruckt am: 15.01.2025 um 10:01 Uhr
10 Kommentare
Neuester Kommentar
Vergiss es, da es so nicht funktionieren dürfte.
Das Problem scheint zu sein, dass da mit der Formel heute() gearbeitet wird.
Und die führt Excel nun mal eben aus.
Man könnte das Tagesdatum beim Erstellen bzw. erstmaligen Ausfüllen der Tabelle per VBA machen.
Oder aber man arbeitet mit einer Hilfsspalte und kopiert dann die Werte in eine andere Spalte.
Oder aber man füllt die Zellen für das Datum manuell.
Das Problem scheint zu sein, dass da mit der Formel heute() gearbeitet wird.
Und die führt Excel nun mal eben aus.
Man könnte das Tagesdatum beim Erstellen bzw. erstmaligen Ausfüllen der Tabelle per VBA machen.
Oder aber man arbeitet mit einer Hilfsspalte und kopiert dann die Werte in eine andere Spalte.
Oder aber man füllt die Zellen für das Datum manuell.
Aber in Spalte C steht dann ja die Formel heute() drin und nicht der Wert der Formel heute().
Das macht die WENN-Formel.
Du müsstest den Inhalt der Spalte C erst kopieren. Der Wert bleibt dann unverändert.
Fällt mir gerade noch ein....
Du könntest die Ursprungsdatei als CSV ausgeben. Und dann die CSV wieder mit Excel öffnen. Dann hast du da überall nur noch Werte.
Das macht die WENN-Formel.
Du müsstest den Inhalt der Spalte C erst kopieren. Der Wert bleibt dann unverändert.
Fällt mir gerade noch ein....
Du könntest die Ursprungsdatei als CSV ausgeben. Und dann die CSV wieder mit Excel öffnen. Dann hast du da überall nur noch Werte.