VBA-Makro bleibt hängen, wenn Excel-Fenster nicht im Fokus

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von edgar456.

    VBA-Makro bleibt hängen, wenn Excel-Fenster nicht im Fokus

    Hallo zusammen,

    ich bin zwar kein VBA-Profi aber ich habe doch schon einige Erfahrung damit gesammelt. Aktuell muss ich ein kleines Excel-Makro schreiben, dass eine ziemlich große Tabelle, nach mir vorgegeben Regeln, formatiert. Das Makro läuft ohne Probleme, jedoch läuft es aufgrund der vielen Daten und Formatierungsregeln an die 10 Minuten.

    Mein Problem ist jetzt, dass das Makro und Excel hängen bleiben sobald ich das Excel-Fenster nicht mehr im Fokus habe (z.B. wenn ich während der Laufzeit im Internet surfe und auf den Browser wechsele), oder wenn sich mein PC sperrt. Ich benutze Windows 10 (64bit) und Excel 2010 (32bit).

    Da ich dazu nichts gefunden habe, würde mich interessieren, ob es überhaupt möglich ist, dass ein Excel-Makro (im Hintergrund) weiterläuft, auch wenn ich in ein anderes Programm wechsle oder sich der PC sperrt?

    Danke schonmal im voraus
    Edgar
    Hallo!

    Kann passieren wenn der Code auf das aktive Fenster zugreift. Aber auch bei Nutzung von SendKeys, bei diesem kann jede Aktivität (z.B. die Maus) das Senden von Tastenfolgen stören. Wenn also z.B. SendKeys im Code enthalten ist sollte man zwischendurch nichts am PC tun, sonder das Makro laufen lassen.

    Aber 10 Minuten sind schon heftig. Da lässt sich sicher etwa optimieren.

    Gruß, René

    edgar456 schrieb:

    ob es überhaupt möglich ist, dass ein Excel-Makro (im Hintergrund) weiterläuft, auch wenn ich in ein anderes Programm wechsle
    Prinzipiell läuft ein sauber geschriebenes Excel-Makro genau wie jedes andere Programm im Hintergrund.

    Ist das ein vom Macrorecorder aufgezeichnetes Makro?
    Dort werden häufig Befehle aufgezeichnet, die die Benutzerinteraktion nachbilden.
    Elemente wie .Select .Activate ActiveSheet sind Anzeichen dafür, dass mit Benutzerinteraktion gearbeitet wird.
    Das kann ggf. stören.

    Auch die Paste-Methode verträgt sich nicht so sehr mit parallelem Arbeiten in anderen Programmen.

    Aber ohne dein Makro zu kennen, können wir nur spekulieren.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Das Makro ist selbst geschrieben und nicht aufgezeichnet. Grundsätzlich bleibt Excel und das Makro einfach stehen und Excel zeigt "Keine Rückmeldung" an. Bei der langen Laufzeit bin ich noch am überlegen wie und wo ich optimieren kann, mit 10 Minuten bin ich selbst auch nicht zufrieden, aber es ist auch noch nicht fertig :)

    @mumpel & petaod: ich denke ihr beide habt recht, ich habe tatsächlich viele Select- und Activate-Befehle sowie Zugriffe auf das aktive Fenster im Code (nur keine SendKeys). Dass diese doch so einen großen Einfluss haben, wusste ich bisher nicht, wieder etwas dazugelernt.

    Ich denke ich weiß jetzt, wo ich im Code ran muss und wo ich ggf. eine alternative Lösung umsetze.

    Danke an alle für die Antworten, das bringt mich auf jeden Fall weiter!