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

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

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

403 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige