Makro beschleunigen + Fehler

12/10/2008 - 12:17 von Peter Schürer | Report spam
Hallo Zusammen,

XL2002.
folgendes Makro muß ca. 30000 Zellen durchlaufen und ist mir etwas zu
langsam.
Wie könnte man es beschleunigen?
Die Anweisung "ActiveCell.Rows.Delete" löscht nicht die ganze aktive Zeile
sondern nur die aktive Zelle.

Public Sub Bereinigen()
Range("B3").Activate
Do While ActiveCell > ""
If ActiveCell.Value = ActiveCell.Offset(-1, 0) And ActiveCell.Offset(0,
1) <> ActiveCell.Offset(-1, 1) Then
ActiveCell.Rows.Delete
Else
ActiveCell.Offset(1, 0).Activate
End If
Loop

End Sub

Danke und Gruß
Peter
 

Lesen sie die antworten

#1 Claus Busch
12/10/2008 - 13:40 | Warnen spam
Hallo Peter,

Am Sun, 12 Oct 2008 12:17:15 +0200 schrieb Peter Schürer:

folgendes Makro muß ca. 30000 Zellen durchlaufen und ist mir etwas zu
langsam.
Wie könnte man es beschleunigen?
Die Anweisung "ActiveCell.Rows.Delete" löscht nicht die ganze aktive Zeile
sondern nur die aktive Zelle.



30000 Zeilen zu kontrollieren dauert schon was. Man könnte etwas
eingrenzen, dass die Werte in C nur dann verglichen werden, wenn die
Werte in B übereinstimmen. Probiere mal, ob dieser Code schneller làuft:
Dim LRow As Long
Dim i As Long

LRow = Range("B" & Rows.Count).End(xlUp).Row

Application.ScreenUpdating = False

For i = LRow To 3 Step -1
If Cells(i, 2) = Cells(i - 1, 2) Then
If Cells(i, 3) <> Cells(i - 1, 3) Then
Rows(i).Delete
End If
End If
Next

Application.ScreenUpdating = True


Mit freundlichen Grüssen
Claus Busch
Win XP Prof SP3 / Vista Ultimate
Office 2003 SP3 / 2007 Ultimate SP1

Ähnliche fragen