2010-04-29 15 views
11

Ich weiß, dass ich hier etwas falsch mache. Ich versuche, die Schlaf-Funktion zu verwenden, um meinen Code zu verzögern, aber ich bekomme "Sub oder Funktion nicht definiert" Fehler. Irgendwelche Tipps?VBA Sleep funktioniert nicht

Antwort

17

VBA keinen Sleep Funktion.

Sie können es von Kernel32.dll wie folgt importieren:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Beachten Sie, dass dies die Anwendung einfriert.
Sie können auch DoEvents in einer While Schleife aufrufen, die die Anwendung nicht einfrieren.

+0

Wo im Code stelle ich diese Erklärung? Ich habe versucht, es innerhalb und außerhalb des Subs, an dem ich arbeite, anzubringen, bekomme aber beide Male Fehler. – sooprise

+0

Welcher Fehler? Versuchen Sie es in ein Modul zu legen. – SLaks

+0

Oh, oops, ich habe versucht, es in ein Excel-Objekt zu setzen (dumme mich). Ich habe es in ein Modul gesteckt und jetzt funktioniert es. Vielen Dank! Ich habe deine Antwort überprüft. – sooprise

7

Sie können auch den aktuellen Makro Zusammenhang mit Application.Wait T Pause, die den gesamten Prozess nicht blockieren wird.

4

Alles, was ich versucht habe, scheint die Anwendung, einschließlich Application.Wait zu hängen. Dies scheint jedoch zu funktionieren:

waitTill = Now() + TimeValue("00:15:00") 

While Now() < waitTill 
    DoEvents 
Wend 
+0

Ich mag dieses und es funktioniert super .. nur eine Ausnahme. Ich finde keine Möglichkeit, 500 ms zu machen ... Also 1 Sekunde ist die Mindestwartezeit. Gibt es eine Möglichkeit, weniger als 1 Sekunde zu machen? – BobNoobGuy

+0

Sie können GetSystemTime in kernel32.dll verwenden, wenn Sie eine höhere Auflösung wünschen: http://www.freevbcode.com/ShowCode.asp?ID=1618 Oder wenn Sie in Excel die Funktion now() der Tabelle aufrufen können (als [now()] von VBA), die auch eine höhere Auflösung hat: https://groups.google.com/forum/#!topic/microsoft.public.excel.programming/-D6lkjJv2ew –

2
Application.Wait DateAdd("m", 10, Now) ' Wait for 10 Minutes 
Application.Wait DateAdd("s", 10, Now) ' wait for 10 seconds 
+2

Willkommen bei Stack-Überlauf! Danke, dass du deine Antwort geschrieben hast! Bitte lesen Sie die [FAQ zu Eigenwerbung] (http://stackoverflow.com/faq#promotion) sorgfältig durch. Beachten Sie außerdem, dass es erforderlich ist *, dass Sie jedes Mal einen Haftungsausschluss veröffentlichen, wenn Sie auf Ihre eigene Website/Ihr Produkt verlinken. –

+0

@AndrewBarber: Wenn man sich den Link anschaut, sieht es nicht wie Babus Seite aus, sondern eher wie eine nützliche Lektüre für die SO. Warum möchtest du es löschen? –

+0

@PeterAlbert Es ist Babus Seite. Sie haben es in letzter Zeit viel gespammt (mehrere ihrer Antworten wurden als Spam gelöscht, weil sie nicht einmal so viele Informationen enthielten), und es ist in ihrem Profil hier. –

Verwandte Themen