Hallo Rudolf,
du hast nichts falsch gemacht. Das ist ein bekanntes Problem, dass Rückgängig nicht mehr funktioniert nachdem ein Makro ausgeführt wurde, das Änderungen im Sheet macht. Hier wird nach dem Löschen per VBA-Code ein Minuszeichen eingetragen. Würde Excel für jede per VBA gemachte Änderung ein Rückgängig anlegen, würde sich das erheblich auf die Performance und die Laufzeit auswirken. Deshalb wird Rückgängig deaktiviert.
Du musst dir also überlegen was dir wichtiger ist: Entweder Minuszeichen oder der Rückgängig-Befehl. Beides geht nicht. Oder doch? Lege ein neues Tabellenblatt mit dem Namen "Sicherung" an (Wichtig!) und ersetze mal testweise den Code in Tabelle1 durch diesen hier:
Dim oldTarget As Range
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("A2:W200")) Is Nothing Then
    If Target.Cells(1) = "" Then
      Application.EnableEvents = False
        Set oldTarget = Target
        Target.Value = "-"
        Application.OnUndo "Löschen rückgängig", "Tabelle1.RueckgaengigLoeschen"
      Application.EnableEvents = True
    Else
      Sheets("Sicherung").Range(Target.Address).Value = Target.Value
    End If
  End If
  
End Sub
Sub RueckgaengigLoeschen()
  ActiveSheet.Range(oldTarget.Address).Value = Sheets("Sicherung").Range(oldTarget.Address).Value
  Application.OnRepeat "Löschen wiederholen", "Tabelle1.WiederholenLoeschen"
End Sub
Sub WiederholenLoeschen()
  ActiveSheet.Range(oldTarget.Address).Value = ""
End Sub
Wenn du nun einen Wert löschst, wird im Menü Rückgängig wenigstens ein neuer Befehl zum Rückgängig machen angelegt. Wenn du den ausführst wird eine Sub ausgeführt, die aus dem Tabellenblatt Sicherung den alten Wert wiederherzuholt. Bei mir klappt das ganz gut. Wie es sich bei dir verhält bleibt abzuwarten.
Sollte dein Sheet nicht Tabelle1 heißen musst du den Namen im OnUndo- bzw. OnRepaet Befehl enstprechend anpassen.
Gruß Mr. K.