Excel Makro VBA Zellen vergleichen und bei Übereinstimmung Zeile löschen
Hallo miteinander, kenne mich leider gar nicht in VBA aus und brauche dringend Hilfe für ein Projekt. Ich beschreibe mal kurz mein Problem: Im Worksheet "Objekt löschen" in zeile C6 soll eine Objekt ID eingegeben werden. Diese muss dann mit den Objekt IDs im Worksheet "Objektdaten" in der Spalte B verglichen werden. Wenn sie dort existiert, dann soll die gesamte Zeile, in der sich die eingegebene ID befindet, gelöscht werden. Das ganze soll funktionieren, indem man auf eine Schaltfläche auf dem 1. Tabellenblatt klickt. Ich hoffe, das war jetzt einigermaßen verständlich erklärt. Freue mich sehr über eure Hilfe Danke :) Rosi
1 Antwort
Ribbon Entwicklertools/ Steuerelemente/ Einfügen/ Active-X-Steuerelemente/ Befehlsschaltfläche wählen und auf dem Blatt aufziehen.
Dann Doppelklick auf die Schaltfläche und diesen Code einfügen:
Private Sub CommandButton1_Click()
Dim Zelle As Range
Dim loLetzte As Long
With Sheets("Objektdaten")
loLetzte = (.Cells(Rows.Count, 2).End(xlUp).Row)
For Each Zelle In .Range(.Cells(1, 2), .Cells(loLetzte, 2))
If Zelle.Value = ActiveSheet.Range("C6").Value Then
Zelle.EntireRow.Delete Shift:=xlUp
End If
Next Zelle
End With
End Sub
Klappt es?
Gern geschehen ☼
Danke fürs Kompliment!
Und JA, die gelöschte Zeile ist unwiderruflich weg.
DAS ist ein Nachteil bei Makros.
Die "Rückgängig"-Option ist weg.
Ich hoffe, das MS das irgendwann mal korrigiert,
aber da sehe ich eher schwarz.
Dem kann man nur begegnen, indem man die Datei vor dem Auslösen eines so kritischen makros speichert und/oder ggf die Datei unter einem neuen Namen speichert.
Okay, dann werde ich da mit Vorsicht rangehen. Vielen Dank für eure Hilfe! Ich schätze mal, dass sich bestimmt bald neue VBA-Rätsel für mich ergeben - in dem Fall wende ich mich wieder an euch, weil das so super klappt ;) Beste Grüße
Vielen Dank für deine schnelle Hilfe! Leider klappt es nicht :( Habe die Schaltfläche eingefügt und das Makro hinterlegt. Es wird allerdings nichts gelöscht, wenn ich es teste... Wäre dir sehr dankbar, wenn du es nochmal versuchst. Kann es sein (kenne mich nicht aus, bloß eine Vermutung), dass im Quelltext bei der "If" nicht steht, dass die zu löschende Zeile im anderen Tabellenblatt ist?! (Bei Zelle.EntireRow.Delete)
Es hat doch geklappt, entschuldige meine Dappigkeit :D Wenn ich ein Objekt jetzt über diese Funktion lösche, ist es dann unwiderruflich gelöscht, oder kann man den Löschvorgang rückgängig machen? Tausend Dank!