VBA bestimmten Zeileninhalt löschen?
Guten Abend,
ich möchte den Zelleninhalt bestimmter Zellen löschen, wenn eine gewisse Bedingung erfüllt ist. Dazu ist zu wissen, dass ich zwei Tabellen haben.
Tabelle 1: Rechungsliste
Tabelle 2: Uebersicht
Wenn ich in der Tabelle "Rechnungsliste" in Spalte I "erledigt" eintrage, soll in der Tabelle "Uebersicht" der dazu passende "Datensatz" (Spalte A-D) gelöscht werden. Jedoch nur der Inhalt, nicht die Zeile. Der Spalteninhalt aus Tabelle A dient als Suchkriterium. Die Range der Tabellen ist von A3:A100.
Beispiel:
Rechnungsliste: RE19002 (Spalte A) wird in "Spalte I" als "erledigt" markiert, dann soll in Tabelle "Uebersicht" der Inhalt der Spalten A-D von RE19002 gelöscht werden.
Ich weiß, dass dies als Funktion direkt im Tabellenblatt eingebaut werden muss, nur leider habe ich durch meine andere offene Frage kein Ansatz.
Das Prinzip müsste wie bei meiner anderen offenen Frage sein:
https://www.gutefrage.net/frage/vba-daten-in-zweite-tabelle-uebertragen#answer-328499597
Gruß
1 Antwort
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
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
@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.