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

Warten bis Event Handler fertig ist

Forumthread: Warten bis Event Handler fertig ist

Warten bis Event Handler fertig ist
21.08.2019 22:56:05
Marc
Guten Abend liebe Forumsgemeinde,
wie kann man erreichen, dass Code nach dem Aufruf einer anderen Sub (die eine API abfragt) wartet bis ein Eventhandler die Daten (aus der API) verarbeitet hat?
Den Code jetzt hier zu posten wäre zu umfangreich.
VG,
Marc
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Warten bis Event Handler fertig ist
21.08.2019 23:05:22
{Boris}
Hi,
ohne Code erstmal nur Stichworte:
Application.Wait
Do Events
Do … Loop Until…
VG, Boris
AW: Warten bis Event Handler fertig ist
21.08.2019 23:15:51
Marc
Hallo Boris,
diese Möglichkeiten habe ich zwarschon in Betracht gezogen aber ich weiß nicht wie ich sie in diesem Zusammenhang anwenden.
Der Call spricht wie gesagt eine API an und die erhaltenen Daten werden von Eventhandler verarbeitet.
Application.wait hinter dem Call zu platzieren hat übrigens nicht geholfen. Der Code wartet trotzdem nicht Bis der Eventhandler geliefert hat.
Loop Until wäre interessant aber welche Bedienung gehört dann hinter das Loop Until?
Anzeige
AW: Warten bis Event Handler fertig ist
21.08.2019 23:27:59
Marc
Ich hatte auch versucht eine öffentliche Variable als Boolean zu deklarieren und dann im Eventhandler den Wert auf true zu setzen am Ende der Sub und den Wert innerhalbeiner do loop schleife abzufragen :
do
call...
loop until wert=true
Aber das hat auch nicht geklappt. Der code hat sich dabei aufgehängt. Das wäre doch aber eigentlich die richtige Lösung oder?
Anzeige
AW: Warten bis Event Handler fertig ist
21.08.2019 23:37:20
Rob
Hi,
so z.B.:

Dim oApp As Object
Dim FileNameZip, SourceFolder
FileNameZip = 'Adresse angeben
Sourcefolder = 'Adresse angeben
Do Until oApp.Namespace(FileNameZip).Items.Count = oApp.Namespace(SourceFolder).Items.Count
Application.Wait (Now + TimeValue("0:00:01"))
Loop

Anzeige
AW: Warten bis Event Handler fertig ist
21.08.2019 23:51:29
Marc
Hi Rob,
bei diesem Code komme ich nicht ganz mit. Ich verstehe nicht was da passiert. Es scheint mir aber so als würde damit eine Datei aufgerufen werden. Ich rufe aber nur eine abdere Prozedur in VBA auf.
AW: Warten bis Event Handler fertig ist
22.08.2019 09:23:14
EtoPHG
Hallo Marc,
Was genau meinst du mit Eventhandler ?
Das kann ja wohl kaum ein Eventhandler von XL sein ?
Eigentlich müsste doch das API einen Rückgabewert liefern, wenn es fertig abgearbeitet ist, oder aber eine Möglichkeit zur Verfügung stellen, ob der Code synchron, bzw. asynchron, abgearbeitet werden soll.
Um was für ein API handelt es sich denn?
Wie lauten Definitionen und Aufruf des API?
Gruess Hansueli
Anzeige
AW: Warten bis Event Handler fertig ist
22.08.2019 21:11:03
Marc
Der Eventhandler arbeitet seinen Code ab sobald das Event ausgelöst wird auf das er eingestellt ist. In meinem Fall eine bestimmte API Anfrage.
Genau, das API liefert Daten und die verarbeite ich auch ohne Probleme. Mein Problem bestand darin den Code warten zu lassen bis er diese Daten verarbeitet hat.
Es hat sich aber gelöst mit einer Do Loop Schleife und einer öffentlichen Variable deren Wert ich am Ende der Eventhandler Prozedur auf True gesetzt habe. Im Loop dann die entsprechende Abfrage und Problem war gelöst.
Danke für die Unterstützung!
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Warten bis Event Handler fertig ist


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu warten, bis ein Event Handler fertig ist, kannst du folgende Schritte befolgen:

  1. Erstelle eine öffentliche Variable: Deklariere eine öffentliche Boolean-Variable, die den Status des Event Handlers speichert.

    Public EventFinished As Boolean
  2. Setze den Wert im Event Handler: Ändere den Wert der Variable am Ende des Event Handlers auf True.

    Sub MyEventHandler()
       ' Dein Code hier
       EventFinished = True
    End Sub
  3. Verwende eine Do Loop Schleife: In der aufrufenden Subroutine kannst du eine Do Loop-Schleife verwenden, um zu warten, bis EventFinished auf True gesetzt wird.

    Sub CallAPI()
       EventFinished = False
       ' API Aufruf hier
       Do While Not EventFinished
           DoEvents
       Loop
    End Sub

Häufige Fehler und Lösungen

  • Code hängt sich auf: Wenn der Code sich aufhängt, überprüfe, ob du in der Schleife Do While Not EventFinished die DoEvents-Funktion verwendest. Diese verhindert, dass Excel während der Schleife nicht mehr reagiert.

  • Event Handler wird nicht ausgelöst: Stelle sicher, dass der Event Handler korrekt eingerichtet ist und dass das entsprechende Event (z.B. eine API-Anfrage) auch wirklich das Event triggert.


Alternative Methoden

Es gibt mehrere Möglichkeiten, um in Excel VBA zu warten. Hier sind einige Alternativen:

  1. Application.Wait: Diese Methode pausiert den Code für eine bestimmte Zeit, aber sie blockiert nicht die Ausführung des Excel-Fensters.

    Application.Wait (Now + TimeValue("0:00:05")) ' 5 Sekunden warten
  2. Do Until Schleife: Anstatt auf eine Variable zu warten, kannst du auch auf eine Bedingung warten. Zum Beispiel, wenn du sicherstellen möchtest, dass eine Datei vollständig geladen ist:

    Do Until FileIsReady
       Application.Wait (Now + TimeValue("0:00:01"))
    Loop

Praktische Beispiele

Hier ist ein Beispiel, wie du excel vba warten in einem realen Szenario anwenden kannst:

Public EventFinished As Boolean

Sub APIRequest()
    EventFinished = False
    ' Simuliere API-Anfrage
    Call SomeAPICall
    ' Warten bis Event Handler fertig ist
    Do While Not EventFinished
        DoEvents
    Loop
End Sub

Sub SomeAPICall()
    ' Simuliere das Verarbeiten der Daten
    Application.Wait (Now + TimeValue("0:00:10")) ' Warte 10 Sekunden
    EventFinished = True
End Sub

Tipps für Profis

  • Event-Handler optimieren: Achte darauf, dass dein Event Handler effizient ist. Lange Wartezeiten in Event Handlers können dazu führen, dass die Benutzeroberfläche einfriert.

  • Verwendung von DoEvents: Dies hilft, Excel reaktionsfähig zu halten, während du wartest. DoEvents ermöglicht es Excel, andere Ereignisse zu verarbeiten.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Event Handler korrekt funktioniert?
Überprüfe, ob die Bedingungen, die den Event Handler auslösen, tatsächlich erfüllt sind. Debugging kann hier sehr hilfreich sein.

2. Was ist der Unterschied zwischen synchronen und asynchronen API-Anfragen?
Synchrone Anfragen warten, bis die Antwort da ist, während asynchrone Anfragen im Hintergrund laufen und du den Code weiter ausführen kannst. Stelle sicher, dass du die Art der Anfrage verstehst, um das richtige Warten zu implementieren.

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