Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile löschen in Bereich

Zeile löschen in Bereich
09.07.2008 14:47:00
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


Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile löschen in Bereich
09.07.2008 14:59:09
Matthias
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.

Anzeige
AW: Zeile löschen in Bereich
09.07.2008 15:02:00
David
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

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
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