Microsoft Excel

Herbers Excel/VBA-Archiv

Doevents oder wait? | Herbers Excel-Forum


Betrifft: Doevents oder wait? von: Steve
Geschrieben am: 20.02.2012 22:36:16

Guten abend an alle,

habe wieder eine frage.

Ich hatte ungefähr diese frage schon mal gepostet aber niemand konnte mir antwort geben, daher ging ich ein wenig suchen und wollte fragen ob es möglich ist mit Doevent oder mit Wait einen code zu bauen der wartet bis die letzte geöffnete excel tabelle wieder geschlossen wird befor er die UserForm wieder anzeigt?

Ich habe nur nicht ganz verstanden was der unterschied ist von den beiden:

wait hält im code ann und wartet auf das ereigniss der den code weiterlaufen lässt (man kann nichts machen)
Doevents fragt auch immer wieder das ereigniss ab aber man kann weiter arbeiten

Ist das ungefähr richtig?

Besten Dank

Steve

  

Betrifft: AW: Doevents oder wait? Besser OnTime ! von: fcs
Geschrieben am: 21.02.2012 10:44:39

Hallo Steve,

Wait ist garnicht geeignet, da Excel dann eine Kaffepause einlegt - siehe Excel-VBA-Hilfe.

Mit DoEvents ginge es, ist aber ggf. risikobehaftet - siehe Excel-VBA-Hilfe- und man muss sehr genau aufpassen, dass man beim Programmieren nicht in eine Endlosschleife gerät. Deshalb hab ich im Makro die Laufzeit der Prüfschleife auf 1 Minute begrenzt.

Ontime hat den großen Vorteil, dass man in Excel praktisch ohne Einschränkungen arbeiten kann, während das Makro im Hintergrund z.B. alle paar Sekunden ausgeführt wird.

Beispiel mit Ontime:
https://www.herber.de/bbs/user/79010.xlsm

Beispiel mit DoEvents:
https://www.herber.de/bbs/user/79011.xlsm

Beide Beispiele funktionieren aber nur, wenn die Arbeitsmappen in der gleichen Excel-Instanz geöffnet sind.


Gruß
Franz


  

Betrifft: AW: Doevents oder wait? Besser OnTime ! von: Steve
Geschrieben am: 21.02.2012 10:55:32

Besten Dank Franz und Dirk,

Ihr habt mir sehr geholfen.
Ietzt weis ich wenigstens den unterschied, und das mit dem ontime hätte ich nie herausgefunden. :-)

Grüsse Steve


  

Betrifft: AW: Doevents oder wait? von: Dirk aus Dubai
Geschrieben am: 21.02.2012 10:47:05

Hallo!

Wait wartet fuer die angegeben Zeit, d.h. es wird solange keine weitere Codezeile abgearbeitet bis diese Zeit verstrichen ist.

Doevents verwendest Du in einer Schleife While - wend oder Do - loop und erlaubt, das auch anderen Event 'Processzeit' zur verfuegung haben und etwas ausloesen koennen.

Fuer Dein Problem muesstest Du eine Schleife bauen und auf Dein Ausloesekriterium pruefen.

Z.B.

Festlegen, auf was geprueft werden soll

In einer Schleife

Do untill ausloessekriterium =true
doevents

loop


Damit sollte das dann gehen.

Gruss

Dirk aus Dubai