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

DoEvents verwenden

Forumthread: DoEvents verwenden

DoEvents verwenden
13.08.2002 08:12:41
Frederik Fuhrmann
Guten Morgen!

Der Befehl "DoEvents" soll doch die Steuerung an das Betriebssystem übergeben solang eine angestoßene Aktion aktiv ist!? D.h., ich müsste doch eigentlich eine Anwendung starten können und dann mit Verwendung von "Do.." die Anmeldung ausführen. (Wartezeit = Zeit zum starten der Anwendung = unbekannt!)


Gruß
F.

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: DoEvents verwenden
13.08.2002 08:16:23
MRR
Es ist ja nun schon Dein 3. oder 4. Beitrag - und noch immer hat keiner was dazu sagen können. Ich befürchte, dass Du hier tiefer in Windows eingreifen musst. Wahrscheinlich wäre die PID des entsprechenden Programms zu ermitteln und dann damit zu arbeiten. Hast Du mal versucht, in API-Referenzen nachzuschauen, ob und welcher Befehl infrage kommen könnte.
Matthias
Anzeige
Re: DoEvents verwenden
13.08.2002 08:22:51
Frederik Fuhrmann
Hallo!

Jaja, bin so langsam schon am verzweifeln!
Habe mich auch schon durch die Hilfe gewühlt, aber nix gefunden!
Will eigentlich jetzt ja nur wissen, wie der Befehl DoEvents korrekt verwendet wird, da das im Beispiel der Hilfe etwas blöd beschrieben ist. Eigentlich müsste das nämlich auf mein Problem passen!


Gruß
F.

Anzeige
Re: DoEvents verwenden
13.08.2002 08:27:37
MRR
Dann vielleicht mal so:

Matthias
Re: DoEvents verwenden
13.08.2002 08:30:54
Frederik Fuhrmann
Heißt das, dass die Steuerung auch vorher an VBa zurückgegeben wird wenn die Ausführung weniger als 3 Sekunden dauern würde?

Re: DoEvents verwenden
13.08.2002 09:09:22
Frederik Fuhrmann
Hallo!

Danke für deine Mühe, aber das mit dem Steuerung übergeben geht nicht!


Gruß
F.

Anzeige
;
Anzeige

Infobox / Tutorial

DoEvents in Excel VBA effektiv nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und aktiviere den VBA-Editor, indem du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste im Projektfenster auf "VBAProject", wähle "Einfügen" und dann "Modul".
  3. Gib den folgenden Beispielcode ein:

    Sub BeispielDoEvents()
       Dim i As Long
       For i = 1 To 100000
           ' Hier wird eine lange Schleife simuliert
           Cells(1, 1).Value = i
           ' DoEvents gibt die Kontrolle an das Betriebssystem zurück
           DoEvents
       Next i
    End Sub
  4. Starte das Makro durch Drücken von F5 im VBA-Editor.

  5. Beobachte, dass Excel während der Ausführung weiterhin reagiert, da DoEvents die Steuerung zurückgibt.


Häufige Fehler und Lösungen

  • Fehler: Excel reagiert nicht während der Schleife

    • Lösung: Stelle sicher, dass du DoEvents innerhalb deiner Schleifen oder langen Prozesse verwendest, um die Benutzeroberfläche reaktionsfähig zu halten.
  • Fehler: Unerwartetes Verhalten bei der Anwendung

    • Lösung: Achte darauf, dass DoEvents nicht zu häufig aufgerufen wird, da dies die Ausführung verlangsamen kann. Verwende es nur, wenn nötig.

Alternative Methoden

Wenn DoEvents nicht die gewünschten Ergebnisse liefert, gibt es einige Alternativen:

  • VBA Sleep: Du kannst die Ausführung für eine bestimmte Zeit unterbrechen, indem du die Sleep-Funktion aus der kernel32-Bibliothek verwendest. Beispiel:

    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    
    Sub BeispielSleep()
       Cells(1, 1).Value = "Warte 3 Sekunden"
       Sleep 3000  ' Pausiert das Makro für 3000 Millisekunden
    End Sub
  • Timer-Funktion: Setze eine Zeitsteuerung in deinem VBA-Code ein, um bestimmte Aktionen zeitlich zu steuern.


Praktische Beispiele

  1. Langsame Datenverarbeitung: Nutze DoEvents, wenn du Daten aus einer externen Quelle importierst:

    Sub DatenImport()
       Dim i As Long
       For i = 1 To 1000000
           ' Simuliere Datenimport
           Cells(i, 1).Value = "Daten " & i
           DoEvents  ' Erlaubt Excel, sich während des Imports zu aktualisieren
       Next i
    End Sub
  2. Anwendung starten und warten: Verwende DoEvents, um eine externe Anwendung zu starten und auf deren Abschluss zu warten:

    Sub AnwendungStarten()
       Shell "notepad.exe", vbNormalFocus
       DoEvents  ' Warte darauf, dass Notepad gestartet wird
       MsgBox "Notepad wurde gestartet!"
    End Sub

Tipps für Profis

  • Verwende DoEvents in Kombination mit Fehlerbehandlungsroutinen, um sicherzustellen, dass deine Anwendung auch bei unerwarteten Fehlern reagiert.
  • Testen: Achte darauf, wie DoEvents in verschiedenen Szenarien funktioniert, insbesondere bei langen Berechnungen.
  • Leistungsbeobachtung: Überwache die Leistung deiner VBA-Anwendungen und passe den Einsatz von DoEvents entsprechend an.

FAQ: Häufige Fragen

1. Was genau macht der Befehl DoEvents?
DoEvents erlaubt es Excel, während der Ausführung eines Makros auf Benutzereingaben und Systemereignisse zu reagieren.

2. Gibt es eine bessere Alternative zu DoEvents?
Ja, du kannst die Sleep-Funktion verwenden, um eine gezielte Pause einzufügen, oder Timer-Objekte für zeitgesteuerte Aktionen einsetzen.

3. Wie lange sollte ich DoEvents in einer Schleife verwenden?
Verwende DoEvents sparsam, da häufige Aufrufe die Ausführungsgeschwindigkeit beeinträchtigen können. Es sollte eingesetzt werden, wenn du lange Berechnungen durchführst.

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