HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
2022
Erfahrungslevel des Fragestellers:
VBA nur mit Recorder
xlKing
29.04.2026 02:13:45
AW: Zeilen löschen verhindern ohne Blattschutz
Es kann natürlich nur ein Worksheet_Change-Makro pro Tabellenblatt geben. In dem Fall muss du halt beide Makros zusammenführen. Ändere mal das Worksheet_Change-Makro wie folgt:

Private Sub Worksheet_Change(ByVal Target As Range)


If Me.UsedRange.Rows.Count < urrc Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "Bitte keine Zeilen löschen, nur leeren"

' Bereich A4:A93 – Buchungsart prüfen
ElseIf Not Intersect(Target, Me.Range("A4:A93")) Is Nothing Then
Call Buchungsart_Geändert(Target)

' Bereich B4:B93 – Datum prüfen und konvertieren
ElseIf Not Intersect(Target, Me.Range("B4:B93")) Is Nothing Then
Call DatumKonvertieren(Target)

' Bereich C3:C93 – Formel wiederherstellen falls gelöscht
ElseIf Not Intersect(Target, Me.Range("C3:C93")) Is Nothing Then

' Nur bei Einzelzellen-Auswahl reagieren
If Target.Cells.CountLarge = 1 Then
If Target.Value = "" Then
Application.EnableEvents = False
On Error Resume Next
If Target.Row = 3 Then
Target.Value = 0
Else
Target.Formula = "=J" & Target.Row
End If
On Error GoTo 0
Application.EnableEvents = True
End If
End If
End If

End Sub

Vergiss aber nicht, auch die anderen Codeteile des letzten Beitrags zu übernehmen.
Gruß Mr. K.
Als Antwort auf diesen Beitrag
Ringberger
29.04.2026 01:16:55
AW: Zeilen löschen verhindern ohne Blattschutz
Hallo und schon vielen Dank,

der Tipp von Mr. K. funktioniert wunderbar, wenn nur dieses eine Makro im Tabellenblatt vorhanden ist. Doch es gibt noch Makro, in dem die Zeile "Private Sub Worksheet_Change(ByVal Target As Range)" vorkommt.


'================================================================================
' Worksheet_Change: Reagiert auf Änderungen in der Tabelle
'================================================================================
Private Sub Worksheet_Change(ByVal Target As Range)

' Bereich A4:A93 – Buchungsart prüfen
If Not Intersect(Target, Me.Range("A4:A93")) Is Nothing Then
Call Buchungsart_Geändert(Target)

' Bereich B4:B93 – Datum prüfen und konvertieren
ElseIf Not Intersect(Target, Me.Range("B4:B93")) Is Nothing Then
Call DatumKonvertieren(Target)

' Bereich C3:C93 – Formel wiederherstellen falls gelöscht
ElseIf Not Intersect(Target, Me.Range("C3:C93")) Is Nothing Then

' Nur bei Einzelzellen-Auswahl reagieren
If Target.Cells.CountLarge = 1 Then
If Target.Value = "" Then
Application.EnableEvents = False
On Error Resume Next
If Target.Row = 3 Then
Target.Value = 0
Else
Target.Formula = "=J" & Target.Row
End If
On Error GoTo 0
Application.EnableEvents = True
End If
End If
End If

End Sub

Ich denke, dass hier die beiden Anweisungen kollidieren und es deshalb nicht läuft. Vielleicht findet ihr ja auch dafür eine Lösung. Die Tabelle ist die "Tabelle1".

Dank

Andreas
Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.