VBA bestimmten Zeileninhalt löschen?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Hi, dazu triggerst du das Makro am besten mit dem Change Ereignis auf dem Tabellenblatt "Rechnungsliste", d.h. den Code nicht in ein Modul sondern auf das entsprechende sheet kopieren und mal antesten


Private Sub Worksheet_Change(ByVal Target As Range)
    
Dim i As Long, Suchbegriff As String


If Target.Column = 9 And Target.Value = "erledigt" Then 'Wenn in Spalte I eine Zelle auf erledigt gesetzt wird
    Suchbegriff = Cells(Target.Row, 1).Value
    For i = 1 To 1000 'Forschleife um endlosschleife zu verhindern, sucht bis Zeile 1000, ggf. anpassen
        If Sheets("Uebersicht").Cells(i, 1).Value = Suchbegriff Then
            Range(Cells(i, 1), Cells(i, 4)).ClearContents
            Exit For
        End If
    Next i
    If i = 1001 Then MsgBox "Datensatz konnte nicht gefunden werden" ' Fehlermeldung, wenn Rechnung nicht gefunden wurde
End If

End Sub



RobinM66 
Fragesteller
 17.11.2019, 19:01

@LtLTSmash

Ich habe es jetzt einmal getestet. Wenn der Datensatz nicht existiert, kommt korrekterweise die MSGBOX. Sollte jedoch der Datensatz in "Uebersicht" existieren, wird der Vorgang abgebrochen mit dem Lauffehler: "Typen unverträglich."

Felgende Zeile wird markiert: If Target.Column = 9 And Target.Value = "erledigt" Then

Zudem eine kleine Änderung, dass die Spalten A, B, D und E in "Uebersicht" gelöscht werden muss.

1
LtLTSmash  17.11.2019, 19:35
@RobinM66

Stimmt.

Ich denke hiermit sollte es klappen.

Private Sub Worksheet_Change(ByVal Target As Range)
    
Dim i As Long, Suchbegriff As String


If Target.Column = 9 And Target.Value = "erledigt" Then 'Wenn in Spalte I eine Zelle auf erledigt gesetzt wird
    Suchbegriff = Cells(Target.Row, 1).Value
    For i = 1 To 1000 'Forschleife um endlosschleife zu verhindern, sucht bis Zeile 1000, ggf. anpassen
        If Sheets("Uebersicht").Cells(i, 1).Value = Suchbegriff Then
            Sheets("Uebersicht").Cells(i, 1).Value = ""
            Sheets("Uebersicht").Cells(i, 2).Value = ""
            Sheets("Uebersicht").Cells(i, 3).Value = ""
            Sheets("Uebersicht").Cells(i, 4).Value = ""
            Sheets("Rechnungsliste").Activate
            Exit For
        End If
    Next i
    If i = 1001 Then MsgBox "Datensatz konnte nicht gefunden werden" ' Fehlermeldung, wenn Rechnung nicht gefunden wurde
End If


End Sub


3