Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
992to996
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
992to996
992to996
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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


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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige