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

for each

Forumthread: for each

for each
05.11.2020 11:32:08
Ulf
Hallo Excel-Freunde,
um die Programmlaufzeit zu optimieren suche ich eine Möglichkeit
in einer "For Each rng_aktuell in rng_Bereich" Schleife
ein paar Zellen zu überspringen.
So geht es nicht: Set rng_aktuell=rng_aktuell.offset(15;0)
Spätestens bei Next bin ich wieder wo ich war.
Muss ich auf eine andere form der Schleife umsteigen?
Wenn ja stellt sich die Frage was ist am schnellsten.
Welchen Unterschied macht es geschwindigkeitemäßig ob ich
For i_Zeile = ... To ..
oder DO while ... nehme?
bzw. mit cells(i_Zeile,...) oder mit rng_Start.Offset(...,...) arbeite.
Viele Grüße
Ulf
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: for each
05.11.2020 11:40:01
RPP63
Moin!
Arbeite mit (temporären) Arrays.
Mehr kann man ob der rudimentären Threaderöffnung nicht sagen.
Gruß Ralf
AW: for each
05.11.2020 13:41:17
Ulf
Hi,
guter Denkanstoß, ich nehme den Rangebereich und spreche die Zellen über die
Nummer im Rangebereich an, das sollte schnell sein und man ist flexibel.
Ulf
Anzeige
AW: for each
05.11.2020 11:57:42
Daniel
Hi
bei Objektschleifen ist es nicht möglich, den "Schleifenzähler" in irgendeiner Form zu manipulieren, um Objekte aus der ursprünglichen Gruppe zu überspringen.
das geht nur mit normalen Zählschleifen, im Regelfall mit Step, im Einzelfall nach Bedingung auch dadurch, dass man den Schleifenzähler verändert.
For-Schleifen sind etwas schneller als Do-Schleifen
in den meisten fällen dürfte das aber nicht "kriegsentscheidend" sein.
Der unterschied ist, dass bei einer For-Schleife der Schleifenendwert fixiert abgelegt wird und somit schneller verfügbar ist, dafür aber auch nicht nachträglich veränderbar ist.
daher ist auch For Each bei Objekten sehr schnell, VBA legt sich hier die Objektmenge "zugriffsgünstig" zurecht, so dass das Schleifenzählerobjekt schneller verarbeitet werden kann als beim normalen Objektzugriff
der unterschied zwischen cells(i_Zeile,...) und rng_Start.Offset(...,...) dürfte auch sehr gering ausfallen. Hier würde ich mich daran orientieren, was für dich einfacher zu programmieren ist. Bei der Rangevariable rng_Start.Offset ist beispielsweise das Tabellenblatt über die Rangevariable vordefiniert. Bei Cells(i_Zeile,...) müsstest du das Tabellenblatt noch mit angeben.
ansonsten musst du halt schauen, obs einfacher ist mit dem Offset-Wert oder mit der absoluten Zeilennummer zu arbeiten, das hängt aber von der konkreten Aufgabenstellung ab.
Der Einfluss auf die Geschwindigkeit sollte gering sein.
Gruß Daniel
Anzeige
AW: for each
05.11.2020 12:19:39
Ulf
Hallo Daniel,
danke für die Informationen,
Ich hatte in einer For Each für eine Untermenge eine Do While
und bin diese Untermenge sozusagen 2x also mit beiden Schleifen durchlaufen.
Die Do While werde ich weglassen, muß dafür paar Variablen mehr machen in denen
ich rückwirkend in bereits durchlaufenen Zeilen agiere.
Euch allen noch einen schönen und weiter so sonnigen Tag
Ulf
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