Automatisch Zeilen löschen
Hallo,
ich btrauch Eure Hilfe!
Ich hab eine Dateiu mit zwei Tabellenblätter. In Tabelle A sind alle Aufträge abgebildet. Diese Aufträge aktualisier ich mittels ODBC. Leider müssen Aufträge aus dieser Auswertung gelöscht werden. Das passiert per Hand. Die Auftragsnummer der zu löschenden Zeile die in Spalte A in steht schreibe ich zur Erinnerung immer in Tabelle B in Spalte A immer in die letzte freie Zeile. Jetzt habe ich schon sehr viele Aufträge in Tabelle B Spalte A stehen die ich jedesmal in Tabelle A suchen muss und per Hand dann löschen.
Ist es möglich mittels VBA das zu automatisieren?? Der Code müsste in Tabelle B Spalte A die Auftragsnumern mit Tabelle A Spalte A vergleichen und wenn er einen identischen Wert findet diese Zeile löschen.
Vielen Dank für Eure Mühe!!!!
Gruß
Elhamplo
Antwort schreiben
Antwort 1 von Saarbauer vom 12.02.2020, 16:15 Options
Hallo,
eine einfach Lösung, auf die schnelle
Sub Zeile_Löschen()
Sheets(1).Select
letzteZeileTab_1 = Range("A65536").End(xlUp).Row
Sheets(2).Select
letzteZeileTab_2 = Range("A65536").End(xlUp).Row
For i = 1 To letzteZeileTab_2
Sheets(1).Select
For j = 1 To letzteZeileTab_1
If Sheets(1).Range("A" & j).Value = Sheets(2).Range("A" & i).Value Then
Rows(j).Select
Selection.Delete Shift:=xlUp
End If
Next j
letzteZeileTab_1 = Range("A65536").End(xlUp).Row
Next i
End Sub
Gruß
Hemut
Antwort 2 von Elhamplo vom 12.02.2020, 17:27 Options
Hallo,
Danke für die Hilfe!
wie muss ich den Code änder damit ich den Tabellen einen Namen geben kann. Tabelle 1 Aufträge und Tabelle 2 Info. Ist das schlimm das wenn in der Datei noch weitere Tabellen hinzukommen??
Danke für Deine Mühe!!!
Gruß
Elhamplo
Antwort 3 von Saarbauer vom 12.02.2020, 18:27 Options
Hallo,
hier zum Beispiel
Sheets(1).Select in Sheets("Aufträge").Select
Sheets(2).Select in Sheets("Info").Select
und das an allen Stellen wo diese Angaben auftauchen.
Zu der zwieten Frage, grundsätzlich nein, aber dann wären entsprechende Anpassungen erfordelich
Gruß
Helmut
Antwort 4 von Elhamplo vom 13.02.2020, 10:24 Options
Hallo,
danke für Deine Hilfe.
Ich muss in die Datei noch weiter Tabellen hinzufügen um Margen etc auszurechnen. Wie müstte ich den Code erweitern das ich immer mal wieder eine Tabelle hinzufügen kann und trotzdem das automatische löschen der Zeilen in der Tabelle "Aufträge" gegeben ist.
Danke für Deine Mühe!!
Gruß
Elhamplo
Antwort 5 von Saarbauer vom 13.02.2020, 11:05 Options
hallo,
willst du auf die anderen Tabellen zurückgreifen oder haben die mit dem Löschen nichts zu tun?
Gruß
Helmut
Antwort 6 von Elhamplo vom 13.02.2020, 11:38 Options
Hallo,
die anderen Tabellen werden mit der Tabelle Aufträge mit summenwenn oder sverweisen verknüpft. Mit dem Löschen haben die nicht zu tun. Das belibt weiterhin so. Alle was in der Tabelle
Sheets(2).Select in Sheets("Info").Select steht soll in Tabelle
Sheets(1).Select in Sheets("Aufträge").Select die Zeilen gelöscht werden.
Danke!!!
Gruß
Elhamplo
Antwort 7 von Elhamplo vom 15.02.2020, 10:04 Options
Hallo,
die anderen Tabellen hben mit dem löschen nichts zu tun.
Danke!!!
Gruß
Elhamplo
Antwort 8 von gast123 vom 15.02.2020, 10:10 Options
hi all :-)
selectionen sollten verbannt werden
statt sheets,was auch ein diagramm sein koennte,waere worksheets(index/name) angebrachter
statt ein zeilenende anzugeben waere rows.count angebrachter
deklarationen sind gar nicht vorhanden und die variablen werden nun als variant angegeben,eine arge speicherverschwendung
gruss gast123
Antwort 9 von Elhamplo vom 20.02.2020, 07:36 Options
Hallo,
danke für den Tip!!
Hab da was rumprobiert aber leider nicht hinbekommen. Kannst Du mir da ein Beispiel zeigen??
Danke für die Mühe!!!
Gruß
Elhamplo
Antwort 10 von Saarbauer vom 20.02.2020, 08:26 Options
Hallo,
so meint @gast123 es
Sub Zeile_Löschen()
Sheets("Aufträge").Select
letzteZeileTab_1 = Rows.Count
Sheets("Info").Select
letzteZeileTab_2 = Rows.Count
For i = 1 To letzteZeileTab_2
Sheets("Aufträge").Select
For j = 1 To letzteZeileTab_1
If Sheets(1).Range("A" & j).Value = Sheets(2).Range("A" & i).Value Then
Rows(j).Delete Shift:=xlUp
End If
Next j
letzteZeileTab_1 = Rows.Count
Next i
End Sub
leider sind so in den Raum geworfene VBA-Brocken keinem, der sich mit der Programmierung nicht so gut auskennt, besonders hilfreich. Aus meiner Sicht verwirren diese eher.
Gruß
Hemut
Antwort 11 von gast123 vom 20.02.2020, 11:26 Options
hi helmut :-)
sollte eine hilfestellung fuer dich sein,da setze ich vorraus das du das verstehst :-))
gruss gast123
Antwort 12 von Elhamplo vom 03.03.2020, 13:25 Options
Hallo
uhhh sorry!!! Hab`s total vergessen. Sorry!!!!!
Habs ausprobiert. Leider klappt das noch nicht so ganz. Kann ich auch sagen ab welcher Zeile er beginnen soll zu löschen??
Danke!!!!!!
Tut mir echt leid das ich mich erst jetzt melde!
Gruß
Elhamplo