![]() |
Betrifft: Zeile löschen in Bereich
von: Florian
Hallo,
ich hätte mal eine Frag für ein kleines Problem.
Ich durchsuche mit einem VBA Programm (u.a.) einen best. Zellenbereich.
Jetzt möchte ich immer dann, wenn die Zelle mit gelber Hintergrundfarbe formatiert ist, die komplette Zeile löschen:
Dim Bereich as Range
Dim Zelle as Range
Set Bereich = Range("A2:A2000")
For Each Zelle In Bereich
If Zelle.Interior.ColorIndex = 36 Then
Zelle.Select
Selection.EntireRow.Delete Shift:=xlUp
End If
Next
Das funktioniert prinzipiell auch.
Allerdings wird immer dann, wenn 2 Zeilen hintereinander gelb markiert sind, die 2. Zeile nicht mehr gelöscht.
Durch das Löschen der Zeile und dem damit verbundenen "hochrutschen" der drunterliegenden wird wohl diese immer nicht geprüft.
Wie könnte o.a. Code aussehen, dass es funktioniert???
Gelöst hab' ich es jetzt halt so:
For z = 2 To 2000
If Range("A" & z).Interior.ColorIndex = 36 Then
Rows(z & ":" & z).Delete Shift:=xlUp
z = z - 1
End If
Next
![]() |
Betrifft: AW: Zeile löschen in Bereich
von: Matthias G
Geschrieben am: 09.07.2008 14:59:09
Hi Florian,
Schleifen, in denen Zellen gelöscht werden, immer "von unten nach oben" abarbeiten:
Sub tt()
Dim Bereich As Range
Dim Zelle As Range, z1 As Long, z2 As Long, i As Long
Set Bereich = Range("A2:A2000")
z1 = Bereich(1).Row
z2 = Bereich(Bereich.Count).Row
For i = z2 To z1 Step -1
'For Each Zelle In Bereich
With Cells(i, 1)
If .Interior.ColorIndex = 36 Then .EntireRow.Delete Shift:=xlUp
End With
Next
End Sub
Gruß Matthias
P.S. vielleicht solltest du noch besser referenzieren auf das Blatt, z.B.
With ActiveWorkbook.Sheets("Tabelle1").Cells(i,1)
damit der Code nicht in falschen Blättern rumpfuscht, falls das aktive Blatt nicht das ist, was gelöscht werden soll.
![]() |
Betrifft: AW: Zeile löschen in Bereich
von: David
![]() |