Makroausführung immer lansgsamer

Bild

Betrifft: Makroausführung immer lansgsamer von: hbis
Geschrieben am: 16.02.2005 10:59:13

Hallo zusammen,

ich sitze gerade an einem Phänomen, für das ich bisher nirgendwo Hinweise gefunden habe:

Ich habe eine Makro gebaut, das nacheinender aus insgesamt 26 verschiedenen Tabellen Daten ausliest, umordnet und -formatiert, zusammenfasst und in neuen (Text-)Dateien ausgibt. Das Makro wird bei Aufruf der zugehörigen EXCEL-Datei automatisch gestartet, die Tabelle schließt sich nach dem kompletten Durchlauf selbst.

Dieses Makro an sich läuft störungsfrei, der Ablauf dauert z.Zt. etwa 3 - 5 Minuten.

Mein Problem: Andere Benutzer sollen das Makro aufrufen können, sie sollten aber nicht in den Ablauf eingreifen oder das Makro abbrechen können. Ich habe daher verschiedene Ansätze ausprobiert (u.a. Application.Visible = False, Application.UserControl = False), die den Ablauf "störungssicherer" machen sollen.

Dabei stehe ich jedesmal vor dem Problem, dass das Makro langsamer wird und EXCEL quasi "stirbt", sobald die Anwendung den Fokus verliert. Ist das EXCEL-Fenster im Vordergund und maximiert, läuft mein Makro, ist es z.B. minimiert und verliert den Fokus durch Anklicken eines anderen Fensters, verlangsamt sich das Makro bis zum Stillstand (btw: bei 97% CPU-"Last" durch "Leerlaufprozess"..)

Der Einbau mehrerer "AppActivate "Microsoft Excel"" ins Makro vermindert die Abbruchrate zwar, aber das kann doch eigentlich nicht die Lösung sein???

Kennt jemand dieses (übrigens Rechner-unabhängige) Phänomen? Gibt es Tipps und Tricks zu diesem Thema?

Wär' nett, wenn ich irgendwie einen Ansatz finden würde.

Vielen Dank vorab!

Hans

Bild


Betrifft: AW: Makroausführung immer lansgsamer von: u_
Geschrieben am: 16.02.2005 11:03:34

Hallo,
das manuelle Abbrechen kannst du einfach mit einem
Application.enablecancelkey=False
am Anfang unterbinden. Am Ende wieder auf True setzen.

Gruß


Bild


Betrifft: AW: Makroausführung immer lansgsamer von: Matthias G
Geschrieben am: 16.02.2005 11:05:36

Hallo Hans,

was helfen könnte:
Application.ScreenUpdating = False

und vor allem:
jegliches Activate und Select im Code vermeiden! Prüfe den Code mal dahingehend.
siehe auch: https://www.herber.de/xlfaq/xlbasics/main_sel.htm

Gruß Matthias


Bild


Betrifft: AW: Makroausführung immer lansgsamer von: hbis
Geschrieben am: 16.02.2005 11:21:27

mmmh...

Interessanter Hinweis. Es wimmelt tatsächlich von "Select"s im Code, ich werde ihn mal überarbeiten. Andererseits: wie sollte das das Problem (läuft im Vordergund/stirbt im Hintergrund) erklären?

Mal schauen, ich werd mich wieder melden.

Danke derweil!

Hans


Bild


Betrifft: AW: Makroausführung immer lansgsamer von: Matthias G
Geschrieben am: 16.02.2005 11:34:22

Hallo Hans,

schon ein Screenupdating = False bringt ca. 300% mehr Geschwindigkeit (bei vielen Selects und Activates), ein Verzicht auf diese Befehle noch mehr.

So kann es sein, dass dein Code statt in 3-5 Minuten in 30 Sekunden oder weniger abgearbeitet ist.

Also ist das erstmal der oberste Priorität ;-)

Gruß Matthias


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Multiplizieren von Währung und Zeit"