Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
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
Inhaltsverzeichnis

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige