Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilen aus Range löschen, wenn Bedingung erfüllt

Zeilen aus Range löschen, wenn Bedingung erfüllt
04.06.2013 12:06:44
Peter
Guten Tag
Mit untenstehendem Code lösche ich gewisse Zeilen, wenn diese in einmem String auf der gleichen Zeile eine bestimmte Bedingung erfüllen.
Das funktioniert so lange, bis die Bedingung auf der zweitletzten Zeile und der letzten Zeile zutrifft. Dann wird die letzte Zeile nicht gelöscht.
Wie kann ich das Problem lösen?
Gruss, Peter
For Each rngZelle In Range("Bereich_9")
If Mid(rngZelle.Offset(0, 1), 6, 1) = "/" _
And Left(rngZelle.Offset(0, 1), 5) = "20806" _
Or Left(rngZelle.Offset(0, 1), 5) = "20807" _
Or Left(rngZelle.Offset(0, 1), 5) = "20808" _
Or Left(rngZelle.Offset(0, 1), 5) = "20816" _
Or Left(rngZelle.Offset(0, 1), 5) = "20817" _
Or Left(rngZelle.Offset(0, 1), 5) = "29999" Then
rngZelle.EntireRow.Delete
GoTo Weiter
End If
Weiter:
Next

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen aus Range löschen, wenn Bedingung erfüllt
04.06.2013 12:34:19
Rudi
Hallo,
Zeilen immer von unten löschen.
Gruß
Rudi

AW: Zeilen aus Range löschen, wenn Bedingung erfüllt
04.06.2013 16:03:45
Luschi
Hallo Peter,
im Grunde hat Rudi Recht, aber einen definierten Bereich kann man nicht so ohne weiteres von unten nach oben durchlaufen. Selbst der Bereich Range("A30:A2") wird von Excel umgedreht zu Range("A2:A30").
Deshalb mache es so:

Dim rngLoeschen As Range
For Each rngZelle In Range("Bereich_9")
If Mid(rngZelle.Offset(0, 1), 6, 1) = "/" _
And Left(rngZelle.Offset(0, 1), 5) = "20806" _
Or Left(rngZelle.Offset(0, 1), 5) = "20807" _
Or Left(rngZelle.Offset(0, 1), 5) = "20808" _
Or Left(rngZelle.Offset(0, 1), 5) = "20816" _
Or Left(rngZelle.Offset(0, 1), 5) = "20817" _
Or Left(rngZelle.Offset(0, 1), 5) = "29999" Then
'erst alle Laufzellen mit gültiger Bedingung sammeln
If rngLoeschen Is Nothing Then
Set rngLoeschen = rngZelle
Else
Set rngLoeschen = Union(rngLoeschen, rngZelle)
End If
Else
'irgendwasanderes
End If
Next
If Not rngloschen Is Nothing Then
rngLoeschen.EntireRow.Delete xlShiftUp
End If
Set rngLoeschen = Nothing
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Zeilen aus Range löschen, wenn Bedingung erfüllt
04.06.2013 16:58:11
Peter
Hallo Rudi
Hallo Luschi
Vielen Dank für die Antworten.
Ich haben den Beitrag von Luschi etwas später gesehen und habe daher die Antwort von Rudi wie folgt umgesetzt:
Set rngV9 = ThisWorkbook.Sheets("KHXZ").Range("Bereich_9")
With rngV9
For i = rngV9 .Rows.Count To 1 Step -1
If Mid(.Cells(i, 1).Offset(0, 1), 6, 1) = "/" _
And Left(.Cells(i, 1).Offset(0, 1), 5) = "20806" _
Or Left(.Cells(i, 1).Offset(0, 1), 5) = "20807" _
Or Left(.Cells(i, 1).Offset(0, 1), 5) = "20808" _
Or Left(.Cells(i, 1).Offset(0, 1), 5) = "20816" _
Or Left(.Cells(i, 1).Offset(0, 1), 5) = "20817" _
Or Left(.Cells(i, 1).Offset(0, 1), 5) = "20818" Then
.Cells(i, 1).EntireRow.Delete
GoTo Weiter
End If
Weiter:
Next
End With
Die Variante von Luschi finde ich auch interessant - werde mir das merken.
Vielen Dank und Gruss, Peter
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige