Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
604to608
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
604to608
604to608
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

zu Doevents

zu Doevents
05.05.2005 01:26:46
chris
Hallo VBA Profis, bin gerade dabei mich mal mit Doevents zu beschäftigen.
Habe dazu auch ein Beispiel aber irgendwie komm ich nicht klar mit der erklärung und dem beispiel das ich mir selbst erstellen wollte.
Hier erst einmal das was ich schon habe.Inklusive erklärung
Mit dem Doevents ist Excel nicht behindert während der Wartezeit von 5 sek kann mann weiter arbeiten !
Dim Pausenlänge, Start, Ende, Gesamtdauer
If (MsgBox("5 Sekunden Pause?", 4)) = vbYes Then
Pausenlänge = 5 ' Dauer festlegen.
Start = Timer ' Anfangszeit setzen.
Do While Timer DoEvents ' Steuerung an andere Prozesse
' abgeben.
Loop
Ende = Timer ' Ende festlegen.
Gesamtdauer = Ende - Start ' Gesamtdauer berechnen.
MsgBox "Die Pause dauerte " & Gesamtdauer & " Sekunden"
Else
End
End If
Die DoEvents-Funktion gibt einen Wert vom Typ Integer zurück, der die Anzahl der geöffneten Formulare in eigenständigen Versionen von Visual Basic (z.B. Visual Basic, Professional Edition) repräsentiert. In allen anderen Anwendungen gibt DoEvents Null zurück.
DoEvents übergibt die Ablaufsteuerung an das Betriebssystem. Das Programm erhält erst dann die Steuerung wieder zurück, wenn das Betriebssystem alle wartenden Ereignisse verarbeitet hat und alle wartenden Tastenanschläge in der SendKeys-Warteschlange abgearbeitet sind.
DoEvents ist für einfache Operationen besonders hilfreich, wenn z.B. einem Benutzer die Möglichkeit gegeben werden soll, einen Prozeß abzubrechen, nachdem er begonnen wurde, beispielweise die Suche nach einer Datei. Bei länger andauernden Vorgängen sollte die Steuerung besser mit Hilfe eines Zeitgebers an den Prozessor abgegeben werden, oder die Aufgabe sollte einer ActiveX-EXE-Komponente übertragen werden. Im zweiten Fall kann die Aufgabe vollkommen unabhängig von Ihrer Anwendung durchgeführt werden, und das Betriebssystem übernimmt das Multitasking und die Zuteilung der Prozessorzeit.
Vorsicht°°°Jedesmal wenn Sie die Steuerung zeitweise innerhalb einer Ereignisprozedur an den Prozessor abgeben, sollten Sie sicherstellen, daß die Prozedur nicht von einem anderen Teil des Codes aufgerufen wird, bevor der erste Aufruf beendet ist. Die Folgen eines solchen Aufrufs sind nicht vorhersehbar. Führen Sie DoEvents auch dann nicht aus, wenn Sie nicht ausschließen können, daß andere Anwendungen in irgendeiner Weise eine Verbindung mit der Prozedur herstellen, während das Betriebssystem die Ausführung steuert.
'------------------ Bis hier-----------------------
um das ganze jetzt zu verstehen wollte ich das nachbauen wie ich diesen befehl verstehe also wozu er benötigt wird. Hier mein versuch.
Sub start()
For x = 1 To 60000
Cells(x, 1) = "etst"
Cells(x, 2) = "etst"
Cells(x, 3) = "etst"
DoEvents
Next
End Sub

Private Sub CommandButton1_Click()
MsgBox ("OK")
Exit Sub
End Sub

'----------------------------------------------------------
Ich habe jetzt gedacht wenn ich die schleife ohne doevents laufen lasse das ich dann in excel nichts arbeite4n kann so lange die schleife läuft.Aber mit dem Doevents kann ich dann die schleife abbreche.
So habe ich jetzt als erstes das Makro Start gestartet und dann auf den Commandbutton auf meinem tabellenblatt geklickt und eigentlich erwartet das das Makro abgebrochen wird.
Wird es aber nicht.
Habe ich diesen befehl richtig verstanden oder wird er für andere Sachen genutzt. Bitte um Eure Hilfe ! Danke und schönen Feiertag grüße Christian

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zu Doevents
05.05.2005 08:40:10
Nepumuk
Hallo Christian,
ein kleines Beispiel: https://www.herber.de/bbs/user/22189.xls
Wenn du keine Anzeige hast die dynamisch ist, wie im Beispiel, dann würde ich DoEvents nur nach der Prüfung des Eingabestatus ausführen.


Option Explicit
Private Declare Function GetInputState Lib "user32" () As Long
Sub test()
    If GetInputState Then DoEvents
End Sub


Der Code macht natürlich keinen Sinn. Aber das Prinzip wird anschaulich. Oder?
Gruß
Nepumuk
Anzeige
AW: zu Doevents
05.05.2005 10:12:11
chris
Hallo Nepumuk, erts mal vielen Dank für deine schnelle Antwort.
--Der Code macht natürlich keinen Sinn. Aber das Prinzip wird anschaulich. Oder?
Ich verstehe denn sinn leider noch nicht ganz, muss aber dazu sagen weiß auch nicht genau was du mit
--Der Code macht natürlich keinen Sinn. Aber das Prinzip wird anschaulich. Oder?
genau meinst.
Ich weiß mein Level ist VBA gut aber etwas mehr als Macro Recorder weiß ich doch deshalb.
grüße Christian und schönen Feiertag
AW: zu Doevents
05.05.2005 10:52:38
Nepumuk
Hallo Christian,
vielleicht wird es so klarer:


Option Explicit
Private Declare Function GetInputState Lib "user32" () As Long
Private bolStop As Boolean
Public Sub prcStart()
    bolStop = False
    Do
        If GetInputState Then DoEvents
    Loop Until bolStop
End Sub
Public Sub prcStop()
    bolStop = True
End Sub


Die DoEvents - Funktion wird nur ausgeführt, wenn du eine Eingabe per Maus oder Tastatur machst. Zu viele DoEvents können Excel abstürzen lassen.
Gruß
Nepumuk
Anzeige

30 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige