Ich habe in meinem langjährigen Projekt, dass ich mit viel Unterstützung aus diesem Forum zum Laufen bekommen habe festgestellt, das sich doch ein Fehler, der jetzt erst aufgefallen ist, zu erkennen gegeben hat.
Ich habe allen Kollegen, die diese Datei nutzen, die benutzerfreundliche Möglichkeit gegeben, die ausgewählte Zeile mit ihren Daten zu löschen. Dies habe ich über das Kontext-Menü "Arbeitstag löschen" realisiert. Beim Löschen sollten aber alle Formeln erhalten bleiben, da sie Grundlage von vielen Berechnungen sind.
Ich habe alle Zellen, die Formeln enthalten "gesperrt" und einen Blattschutz eingerichtet.
Für das Kontext Menü habe ich folgende Prozedur im Modul mod_AktiveRowClearContents hinterlegt...
Sub Inhalt_loeschen()
' Löscht den Inhalt der gewählten Zeile (Formeln und Formatierungen bleiben erhalten)
Dim lngColumn As Long, Datum As Date
Datum = CDate(Cells(ActiveCell.Row, 2))
If MsgBox("Möchtest du den " & Datum & " löschen?", vbQuestion + vbYesNo, "Arbeitstag löschen") = vbYes Then
ActiveSheet.Unprotect
' ab Spalte 4 bis zur letzten Spalte mit Inhalten
For lngColumn = 4 To Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Column
If Not Cells(ActiveCell.Row, lngColumn).HasFormula Then 'wenn in Zeile Spalte KEINE Formeln dann gehe zu 1
If Cells(ActiveCell.Row, lngColumn).MergeCells Then 'wenn in Zeile Spalte Verbundene Zellen erhält dann ...
Cells(ActiveCell.Row, lngColumn).MergeArea.ClearContents '... lösche deren Inhalt, sonst 2
Else
Call Cells(ActiveCell.Row, lngColumn).ClearContents ' 2 - lösche den Inhalt der Spalte der aktiven Zeile
Cells(ActiveCell.Row, 22) = "00:00"
End If
End If
Next ' 1 - gehe zur nächsten Spalte
ActiveSheet.Protect
Else: Exit Sub
End If
End Sub
Leider werden die Formeln speziell in den Spalten N, W und BI gelöscht, die aber nicht gelöscht werden sollten.
Nun habe ich ebenfalls die Möglichkeit über das Kontext Menü den Arbeitstag mit "Arbeitstag eintragen" (frm_Tag) einzutragen. Ich habe das Eingeben des Arbeitstages nur über die UF frm_Tag zugelassen, um durch mein unzureichendes VBA Verständnis Eingaben zu verhindern, die zu Fehler führen könnten.
Ich schicke die sehr stark reduzierte Datei, um euch das Anliegen zu veranschaulichen. Die enthaltenen Daten sind größtenteils fiktiv.
https://www.herber.de/bbs/user/172414.xlsm
Wie kann ich verhindern, das die Formeln gelöscht werden?
Da mein VBA nicht so gut ist, um es zu aus dem Stand zu verstehen und umzusetzen, wäre ich wieder auf eure Hilfe angewiesen.
Vielen Dank im Voraus.
VG Peer