Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1680to1684
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Befehlt funktioniert nicht wie erwartet

Befehlt funktioniert nicht wie erwartet
20.03.2019 08:40:14
Luisa
Hallo,
Ich habe mal wieder ein für mich sehr komisches Problem. Ich habe eine Excel Tabelle mit Daten aus einer SAP Abfrage und möchte alle Zeilen löschen, bei denen in der ersten Spalte "AAAEDB" steht. Das ergibt für mich folgenden Befehl:

For introw = 1 To Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
If Cells(introw, 1).Value = "AAAEDB" Then Tabelle1.Rows(introw).Delete
Next
Interessanterweise löscht das aber nur ca. die Hälfte der Einträge. Wenn ich den Code nochmal starte löscht es wieder die Hälfte und immer so weiter. Kann sich jemand erklären, warum das so ist?
Danke und LG
Luisa

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Befehlt funktioniert nicht wie erwartet
20.03.2019 08:44:24
MCO
Guten Morgen Luisa!
Das ist so, weil zb die Zeile 5 beim löschen zu zeile 4 wird und das bei jedem löschvorgang.
Du mußt unten anfangen, dann hast du das problem nicht mehr.
For introw = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row to 1 step -1
Gruß, MCO
Danke!
20.03.2019 08:46:37
Luisa
Hallo,
Oh man... Da hätte ich ja auch selbst drauf kommen können :D Manchmal hat man einfach ein Brett vorm Kopf :D
Danke Dir und noch einen schönen Tag!
LG Luisa
AW: Befehlt funktioniert nicht wie erwartet
20.03.2019 08:47:26
Engelchen
Hallo Luisa,
meines Erachtens musst Du von hinten nach vorn löschen, d.h.
(ungetestet)
For introw = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
LG!
Engelchen
Anzeige
AW: Befehlt funktioniert nicht wie erwartet
20.03.2019 08:57:21
Daniel
Hi
naja, Zeilen einzeln per Schleife löschen ist langsam und aufwendig.
probier mal das:
with columns(1)
.replace "AAAEDB", True, xlwhole
.SpecialCells(xlcelltypeconstants, 4).EntireRow.Delete
End with
oder die Standardmethode zum schnellen löschen von Zeilen mit Bedingung, hierbei werden per Formel alle Zeilen, die gelöscht werden sollen mit 0 markiert und die anderen Zeilen mit ihrer Zeilennummer. Dann kann man über das Duplikate-Entfernen die Zeilen mit 0 löschen:
With Tabelle1.Usedrange
with .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=IF(RC1=""AAAEDB"",0,Row())"
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .Column, xlno
.ClearContents
end with
end with
Gruß Daniel
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige