Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

Zeile löschen in Bereich

Betrifft: Zeile löschen in Bereich von: Florian
Geschrieben am: 09.07.2008 14:47:53

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
Geschrieben am: 09.07.2008 15:02:34

Nicht sehr elegant, aber funzt bei mir:

Einfach deine Schleife in eine weitere Schleife einbetten:

For i=1 to 2/3/4...
...
Next

Wenn dein Bereich nicht allzu groß ist, sollte das nicht viel länger dauern.

Gruß

David


 

Beiträge aus den Excel-Beispielen zum Thema "Zeile löschen in Bereich"