Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pause in Makro einfuegen?

Forumthread: Pause in Makro einfuegen?

Pause in Makro einfuegen?
11.12.2002 23:14:03
Andreas
Ich habe eine Datei die auf externe Daten zurueckgreift und die auf manuell berechnen steht. In meinem auto_open makro rufe ich die externen Daten ab und sage danach neu berechnen. Da das Makro aber schneller ist als das aufrufen der externen Daten, ist das auto_open makro schon fertig bevor die Daten erneuert sind. Ich muss danach also nochmal manuell berechnen.
Kann ich eine Pause in das Makro vor dem neu berechnen einbauen, so dass die Daten erneuert sind und erst dann neu berechnet wird?

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Pause in Makro einfuegen?
11.12.2002 23:20:37
PeterW
Hallo Andreas,

schau Dir in der VBA-Hilfe mal Wait an.

Gruß
Peter

Re: Pause in Makro einfuegen?
12.12.2002 07:25:34
Georg
Hi,
hier kannst Du die Verzögerung anpassen.

Application.Wait Now + TimeValue("00:00:01")
Gruß; Georg

Re: Pause in Makro einfuegen?
12.12.2002 12:52:14
Michael Scheffler
Hallo,

mach das bitte über DoEvents, mit Wait widersprichst den Prinzipien der Windows-Programmierung.

Gruß

Micha

Anzeige
Re: Pause in Makro einfuegen?
12.12.2002 14:49:43
Andreas
Dankeschoen, hat funktioniert.

Andreas

;
Anzeige

Infobox / Tutorial

Pause in einem Makro einfügen


Schritt-für-Schritt-Anleitung

Um eine Pause in dein Excel VBA Makro einzufügen, kannst du die Methode Application.Wait oder DoEvents verwenden. Hier sind die Schritte für beide Methoden:

  1. Application.Wait verwenden:

    • Öffne den VBA-Editor (Alt + F11).
    • Füge den folgenden Code in dein Makro ein:

      Sub Auto_Open()
      ' Daten abrufen
      ' ...
      
      ' Pause von 1 Sekunde einfügen
      Application.Wait Now + TimeValue("00:00:01")
      
      ' Neu berechnen
      Application.Calculate
      End Sub
  2. DoEvents verwenden:

    • Eine andere Möglichkeit besteht darin, DoEvents zu verwenden, um sicherzustellen, dass das System die aktuellen Aufgaben abschließen kann.
    • Beispiel:

      Sub Auto_Open()
      ' Daten abrufen
      ' ...
      
      ' Pause einfügen
      For i = 1 To 1000000
         DoEvents
      Next i
      
      ' Neu berechnen
      Application.Calculate
      End Sub

Häufige Fehler und Lösungen

  • Fehler: Das Makro wird zu schnell ausgeführt und die Daten werden nicht rechtzeitig aktualisiert.

    • Lösung: Verwende Application.Wait, um eine gezielte Pause einzubauen. Achte darauf, dass die angegebene Zeit ausreichend ist, um die externen Daten abzurufen.
  • Fehler: Bei Verwendung von Wait stürzt Excel ab oder reagiert nicht mehr.

    • Lösung: Überlege, stattdessen DoEvents zu verwenden, da dies die Programmierung unter Windows nicht stört.

Alternative Methoden

Neben den bereits genannten Methoden gibt es noch andere Ansätze, um eine Pause in VBA einzufügen:

  • Timer-Funktion: Du kannst auch einen Timer in VBA verwenden, um eine Verzögerung zu erzeugen.
  • Schleifen mit Sleep: Wenn du eine präzisere Steuerung benötigst, kannst du die Windows-API Sleep nutzen, um die Ausführung für eine bestimmte Millisekunde zu pausieren.

    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    
    Sub Auto_Open()
       ' Daten abrufen
       ' ...
    
       ' Pause von 1000 Millisekunden (1 Sekunde)
       Sleep 1000
    
       ' Neu berechnen
       Application.Calculate
    End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von Pausen in Excel VBA:

  1. Pause zwischen mehreren Datenabrufen:

    Sub DatenAbrufen()
       ' Erster Datenabruf
       ' ...
       Application.Wait Now + TimeValue("00:00:02") ' 2 Sekunden Pause
    
       ' Zweiter Datenabruf
       ' ...
       Application.Calculate
    End Sub
  2. Benutzerinteraktion während der Pause:

    Sub BenutzerPause()
       Dim i As Long
       For i = 1 To 10
           DoEvents ' Benutzer kann während der Schleife interagieren
           Application.Wait Now + TimeValue("00:00:01") ' 1 Sekunde Pause
       Next i
    End Sub

Tipps für Profis

  • Verwende DoEvents anstelle von Wait, wenn du möchtest, dass dein Makro weiterhin auf Benutzerinteraktionen reagiert.
  • Wenn du häufig Pausen in deinen Makros benötigst, erwäge, eine eigene Funktion zu erstellen, die die Pausenlogik kapselt.
  • Teste deine Makros gründlich, um sicherzustellen, dass die Wartezeiten angemessen sind und keine unerwünschten Effekte auftreten.

FAQ: Häufige Fragen

1. Wie lange kann ich eine Pause in VBA einstellen?
Du kannst die Pause auf jede beliebige Zeit einstellen, aber achte darauf, dass sehr lange Pausen die Benutzererfahrung negativ beeinflussen könnten.

2. Was passiert, wenn ich Application.Wait für zu lange einstelle?
Excel wird während dieser Zeit nicht reagieren, was zu einem unbefriedigenden Nutzererlebnis führen kann. Es ist ratsam, kürzere Pausen zu verwenden und DoEvents für Benutzerinteraktion einzusetzen.

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