Clever-Excel-Forum

Normale Version: Code 1x in 630sek und danach in 30sek??
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi zusammen,

ich habe eine "generelle" Frage und zwar:

ich habe einen Code, der ziemlich viel schleifen und Suchfunktionen besitzt und welcher gaaaaanz viele Daten verarbeitet.

Öffne ich mein Workbook, und führe den Code aus, braucht er 630 Sekunden.

Wenn ich den Code direkt danach wieder ausführe, braucht er nur 30 Sekunden.

Schließe und öffne das Workbook erneut, braucht er wieder 630 Sekunden. Huh Huh Huh

Was macht Excel da? Ist das normal? Ist das so Art Cache oder Speicher etc..?

Grüsse
Hi,


Zitat:ich habe einen Code, der ziemlich viel schleifen und Suchfunktionen besitzt und welcher gaaaaanz viele Daten verarbeitet.

dann zeig ihn doch mal.
Meistens liegt das an Zuweisungen, die "wie per Menü getätigt" auch in VBA verzögert funktionieren.

Und Menüfunktionen müssen beim ersten Mal gestartet werden. Beim zweiten Mal sind sie schon aktiv.

Beispiel: Formatierungen.

Abhilfe: Die Datei besitzt schon die Eigenschaften, die ihr bislang durch das Makro zugewiesen werden sollen.
Hi, welche eigenschaften meinst du? Den hauptsächlichen aufwand ist dass er in einem Feld etwas sucht, dann zellen nach unten geht und in einer variablen zeile dann in die Zelle etwas einfügt. das macht er bis zu 6000 mal
Bosko hat was von Dir gewollt. Ansonsten kannst Du Timer verwenden, um Codeschritte zu messen.
Hallo rotzi,

da hast Du doch wahrscheinlich schon Deine Begründung. Wenn beim ersten mal 6000x was in die Zellen geschrieben wird, dann brauchst Du das beim zweiten mal nicht mehr, weil es schon drin ist, oder?

Das Ganze potenziert sich noch, wenn Excel nach jeder Änderung etwas rechnen muss. Da wird dann also min. 6000x gerechnet.

Das Rechnen könnte man schon mal reduzieren, wenn man an geeigneter Stelle den Berechnungsmodus auf manuell stellt, z.B. vor dem Öffnen der Datei, und an anderer geeigneter Stelle wieder auf Automatik und ggf. die Berechnung anschiebt, z.B. wenn die Datei endgültig offen ist.