
37414
10.02.2021, aktualisiert um 14:22:01 Uhr
Alle Zeilen sperren, in denen ein bestimmter Ausdruck auftaucht
Hallo liebe User,
ich habe eine Excel-Datei im Format ".xlsm", in der Daten eingetragen werden, die sich nachträglich nicht mehr verändern lassen dürfen.
Der komplette Bereich liegt zwichen A10 und P19.
Dazu gibt es im Zellbereich P10 - P19 jeweils eine Zelle, in der ein Datum eingetragen wird. Nach Eintrag dieses Datums wird die Excel-Datei geschlossen.
Die jeweiligen Zeilen, in denen nun der Ausdruck "erteilt" in einer Zelle auftaucht, sollen komplett gesperrt werden... aber erst, nachdem das Datum eingetragen wurde.
Am besten wäre es daher, dass die Funktion erst greift, wenn das Tabellenblatt nach Eingabe des Datums geschlossen wird.
Zu bedenken ist dabei jedoch, dass es in jeder Zeile innerhalb des Zellbereichs A10 - P19 bereits Zellen gibt, die gesperrt sind, da es sich um Ergebnis-Zellen handelt.
Und es sollte die Möglichkeit geben, die gesperrten Zellen nach Eingabe eines Kennwortes doch noch editieren zu können, um eventuelle Fehler korrigieren zu können.
Aber ich nehme an, dass dies eh über "Blattschutz aufheben" möglich sein dürfte, wodurch man die entsprechenden Zellen ja dann wieder entsperren könnte. Aber vielleicht geht das ja auch etwas eleganter
Und am besten wäre eine automatische Speicherung, sobald man die Excel-Tabelle schließt.
ALTERNATIV könnte die Sperrung und Speicherung auch starten, nachdem in der jeweiligen Zelle der Spalte "P" das Datum eingetragen wurde und die Tabelle geschlossen wird.
Ich nehme an, dass dies mit VBA-Code umsetzbar ist.
Würde mich sehr freuen, wenn mir jemand von Euch mit einem passenden Code helfen könnte.
Ich hatte dazu schon folgende ähnliche Lösung von "colinardo" gefunden, wo ich jedoch mit der Umstellung auf meine Anforderungen Probleme hatte:
Danke & schöne Grüße,
imebro
ich habe eine Excel-Datei im Format ".xlsm", in der Daten eingetragen werden, die sich nachträglich nicht mehr verändern lassen dürfen.
Der komplette Bereich liegt zwichen A10 und P19.
Dazu gibt es im Zellbereich P10 - P19 jeweils eine Zelle, in der ein Datum eingetragen wird. Nach Eintrag dieses Datums wird die Excel-Datei geschlossen.
Die jeweiligen Zeilen, in denen nun der Ausdruck "erteilt" in einer Zelle auftaucht, sollen komplett gesperrt werden... aber erst, nachdem das Datum eingetragen wurde.
Am besten wäre es daher, dass die Funktion erst greift, wenn das Tabellenblatt nach Eingabe des Datums geschlossen wird.
Zu bedenken ist dabei jedoch, dass es in jeder Zeile innerhalb des Zellbereichs A10 - P19 bereits Zellen gibt, die gesperrt sind, da es sich um Ergebnis-Zellen handelt.
Und es sollte die Möglichkeit geben, die gesperrten Zellen nach Eingabe eines Kennwortes doch noch editieren zu können, um eventuelle Fehler korrigieren zu können.
Aber ich nehme an, dass dies eh über "Blattschutz aufheben" möglich sein dürfte, wodurch man die entsprechenden Zellen ja dann wieder entsperren könnte. Aber vielleicht geht das ja auch etwas eleganter
Und am besten wäre eine automatische Speicherung, sobald man die Excel-Tabelle schließt.
ALTERNATIV könnte die Sperrung und Speicherung auch starten, nachdem in der jeweiligen Zelle der Spalte "P" das Datum eingetragen wurde und die Tabelle geschlossen wird.
Ich nehme an, dass dies mit VBA-Code umsetzbar ist.
Würde mich sehr freuen, wenn mir jemand von Euch mit einem passenden Code helfen könnte.
Ich hatte dazu schon folgende ähnliche Lösung von "colinardo" gefunden, wo ich jedoch mit der Umstellung auf meine Anforderungen Probleme hatte:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Als gespeichert festlegen damit keine Nachfrage von Excel kommt
ActiveWorkbook.Saved = True
'Speichere das Sheet automatisch bevor es geschlossen wird
ActiveWorkbook.Save
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ws As Worksheet, changeRange As Range
'Arbeitsblatt auf dem die Änderung vorgenommen wird
Set ws = Sh
'Bereich der überwacht wird
Set changeRange = ws.Range("C2,C3,C5,C6,C8,C9,C11,C12,C14,C15")
'Wenn eine Änderung an einer Zelle vorgenommen wird die in der Liste steht ...
If Not Application.Intersect(changeRange, Target) Is Nothing Then
If ws.ProtectContents = True Then
'Wenn das Sheet geschützt ist entferne kurzfristig den Schutz um die Zelle als gesperrt festzulegen.
ws.Unprotect ""
Target.Locked = True
Else 'Sheet ist ungeschützt
Target.Locked = True
End If
'aktiviere den Blattschutz mit leerem Kennwort
ws.Protect "", Contents:=True
End If
End Sub
Danke & schöne Grüße,
imebro
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 650192
Url: https://administrator.de/forum/alle-zeilen-sperren-in-denen-ein-bestimmter-ausdruck-auftaucht-650192.html
Ausgedruckt am: 01.05.2025 um 13:05 Uhr
2 Kommentare
Neuester Kommentar