Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1492to1496
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

Makro löscht falsche Zeilen

Makro löscht falsche Zeilen
13.05.2016 08:54:57
Kai
Hallo zusammen,
ich habe ein Textfeld in dem eine Teilenummer steht. Ich habe weiterhin eine Tabelle, in der viele verschiedene Teilenummern, einmal oder öfter vorkommen. Ich möchte über eine Schleife per selection.entirerow.delete die Tabelle so "ausdünnen", dass alle Teilenummern die nicht der Teilenummer in meinem Textfeld entsprechen, gelöscht werden. Da in den Zellen rechts neben den Nummern noch weitere Infos stehen, soll direkt die ganze Zeile gelöscht werden, siehe oben.
Der Aufbau der Teilenummern hat folgenden Character: A5-XYZ-12345A0
Nun zum Problem: Das Makro führt alles brav durch, allerdings löscht es die falschen Zeilen, bzw vergisst Teilweise welche zu löschen.
Woran kann das wohl liegen? Hier mein Makro:
Userbild
Vielen Dank für Eure Hilfe!
Gruß
Kai

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

Betreff
Datum
Anwender
Anzeige
AW: Makro löscht falsche Zeilen
13.05.2016 09:03:21
Arthur
Hallo Kai.
Ich glaube, dass du dir mit dem Löschen den Boden unter den Füßen wegziehst. Wenn eine Zeile gelöscht wird steht der Cursor ja schon wieder in der nächsten Zeile, die dann übersprungen wird. Anstelle der Do-Schleife solltest du einen Zähle mitlaufen lassen, der nur dann hochgezählt wird, wenn keine Zeile gelöscht wird.
Gruß, Arthur.

AW: Makro löscht falsche Zeilen
13.05.2016 09:04:26
ChrisL
Hi Kai
Zeilen löschen musst du rückwärts, weil sonst wird eine Zeile übersprungen.
Sub tt()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile As Long
Set WS1 = Worksheets("Historie")
Set WS2 = Worksheets.Add
WS2.Name = "Materialhistorie"
WS1.UsedRange.Copy WS2.Range("A1")
For iZeile = WS2.Cells(WS2.Rows.Count, 1).End(xlUp).Row To 2 Step -1
If WS2.Cells(iZeile, 1)  txtnummer Then WS2.Rows(iZeile).Delete
Next iZeile
End Sub

Mit Autofilter ( textnummer) und anschliessendem Kopieren könntest du dir die Schleife sparen.
cu
Chris

Anzeige
AW: Makro löscht falsche Zeilen
13.05.2016 11:01:29
Daniel
Hi
das Problem wurde dir ja schon benannt.
du könntest deine Do-Schleife weiter verwenden, in dem das .Offset nur dann ausführst, wenn keine Zeile gelöscht wurde.
Nach dem Löschen einer Zeile ist es unnötig, weil die nächste Zeile ja automatisch in die aktuelle Zeile nachrückt und somit ein verschieben der Aktuellen Zeilen unnötig ist.
Setze daher das Verschieben der ActiveCell einfach in den ELSE-Teil des IFs:

Do Until ActiveCell.Value  ""
If AcitveCell.Value  "hier dein Text" then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End if
Loop
allerdings ist die Methode grundsätzlich sehr langsam.
das Löschen von Zeilen mit Bedingung geht so viel schneller:
With ActiveSheet.UsedRange
With .Columns(.columns.count + 1)
.FormulaR1C1 = "=IF(RC2=""" & frmanzeigenändern.txtnummer.value & """,Row(),0)"
.Cells(1, 1).Value = 0
.EntireRow.Removeduplicates .column, xlno
.ClearContents
end with
end With
Gruß Daniel

Anzeige
AW: Makro löscht falsche Zeilen
17.05.2016 16:02:30
Kai
Vielen Dank für die Hilfe, klappt! Hab mir da tatsächlich "den Boden unter den Füßen weggerissen"!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige