Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

For-Schleife ersetzen?

Forumthread: For-Schleife ersetzen?

For-Schleife ersetzen?
11.09.2023 14:35:01
Chris
Hallo Forum,

mit untenstehendem Makro färbe ich jede zweite Reihe farbig ein. Das funktioniert ganz prima. Da es sich um rund 500 Zeilen handelt, ist die FOR-Schleife etwas langsam.
Wie kann man dieses Makro beschleunigen und dabei auf die FOR-Schleife verzichten?



For i = 2 To 1000 Step 2
Sheets("Test").Cells(i, 1).Resize(,10).Interior.Color = RGB(230, 230, 230)
Next i


Gruß

Chris
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For-Schleife ersetzen?
11.09.2023 14:40:28
Crazy Tom
Hi

in meinem Test dauert das Färben der Zellen nur einen Wimpernschlag

MfG Tom
AW: For-Schleife ersetzen?
11.09.2023 14:43:41
daniel
Hi
wenn färbung über Bedingte Formatierung möglich ist, könntest du auch diese Bedingung erstellen:
=Rest(Zeile();2)=0


per Code gibts mehrere Möglichkeiten
man könnte erstmal alle Zellen in einer Rangevariable sammeln:

dim rng as range

set rng = Cells(2, 1).Resize(, 10)
for z = 4 to 1000 step 2
set rng = union(rng, Cells(z, 1).Resize(10))
next
rng.interior.color = RGB(...)


man könne auch eine Hilfsspalte verwenden
with Range("X2:X1000")

.FormulaR1C1 = "=IF(Mod(Row(),2)=0,True,0)
.Intersect(Range("A:J"), .SpeicalCells(xlcelltypeformulas, 4).entireRow).Interior.Color = RGB(...)
.ClearContents
end with


Gruß Daniel
Anzeige
For-Schleife ersetzen?
11.09.2023 16:15:49
Chris
Hallo zusammen,

danke, beides funktioniert. Weshalb die Farbgebung gleiche mehrere Sekunden dauert, kann ich nicht sagen..

OWT.

Gruß
Chris
For-Schleife ersetzen?
11.09.2023 18:15:54
daniel
Hi
gehts damit jetzt schneller oder nicht?
Farbgebung sollte eigentlich sehr schnell sein, da das Umformatieren in Excel keine oder zumindest weniger Nachfolgeprozesse auslösen sollte wie eine Wertänderung
Gruß Daniel
Anzeige
AW: For-Schleife ersetzen?
11.09.2023 15:25:49
onur
"ist die FOR-Schleife etwas langsam" ???
Und was willst du mit den eingesparten 15 milisekunden anfangen? Eine Weltreise?
Länger braucht die Schleife nicht.
For-Schleife ersetzen?
11.09.2023 15:41:20
GerdL
Moin
Without_Loop()

Sub With Sheets("Test")
.ListObjects.Add
.ListObjects(1).Resize Sheets("Test").Range("A1:I1000")
.ListObjects(1).TableStyle = "TableStyleMedium4"
End With
End Sub

Gruß Gerd
Anzeige
For-Schleife ersetzen?
11.09.2023 16:22:15
Yal
Hallo Chris,

der klassiker:
Application.ScreenUpdating = False

For i = 2 To 1000 Step 2
Sheets("Test").Cells(i, 1).Resize(, 10).Interior.Color = RGB(230, 230, 230)
Next i
Application.ScreenUpdating = true


VG
Yal
Anzeige
AW: For-Schleife ersetzen?
11.09.2023 16:30:26
onur
Application.ScreenUpdating macht bestimmt 11,8 aus den 12 milisekunden. :)
For-Schleife ersetzen?
11.09.2023 16:48:50
Yal
Für die Performance-Messung ist Chris zuständig. Sein Rechner scheint andere Massstabe zu haben als unseren.

Ich denke nur, dass er erfahren sollte, dass "Screenupdating" existiert.

VG
Yal
AW: For-Schleife ersetzen?
11.09.2023 16:53:29
onur
"Sein Rechner scheint andere Massstabe zu haben als unseren" - stimmt, macht Sinn, wenn man 100 mal pro Sekunde alle Zellen umfärben muss. Oder die Software für die nächste Marsmission programmieren muss. Da kommt es auf jede Mikrosekunde an....
Anzeige
For-Schleife ersetzen?
11.09.2023 17:06:22
daniel
Wenn ScreenUpdating einen signifikanten Einfluss auf die Performance hat, dann hat der Code in der Regel noch optimierungspotential
;

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