Timer auf user form in Excel-VBA
Ich habe einige alte Excel-VBA-code möchte ich ausführen einer Aufgabe in regelmäßigen Abständen. Wenn ich mit VB6, würde ich verwendet haben Sie ein timer-Steuerelement.
Fand ich die - Anwendung.OnTime() Methode, und es funktioniert gut für code, der ausgeführt wird, in ein Excel-Arbeitsblatt, aber ich kann es nicht arbeiten lassen in einem Formular. Die Methode nie aufgerufen wird.
Wie kann ich die Anwendung.OnTime () - Aufruf einer Methode in einem Formular, oder gibt es andere Möglichkeiten, um einen Zeitplan zum ausführen des Codes in VBA?
InformationsquelleAutor Don Kirkby | 2009-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich fand eine Abhilfe für dieses. Wenn Sie schreiben Sie eine Methode in ein Modul ruft nur eine Methode in der user-form, dann kann man planen die Modul-Methode Anwendung.OnTime().
Art ein Schlamassel, aber es werde tun, es sei denn, jemand hat einen besseren Vorschlag.
Hier ein Beispiel:
InformationsquelleAutor Don Kirkby
Ich brauchte ein sichtbarer countdown-timer, die bleiben könnte, oben auf anderen Fenstern und laufen flüssig, ob änderungen an der Arbeitsmappe, oder minimieren Sie das Excel-Fenster. So, angepasst ich die @don-kirkby, kreative code oben für meine eigenen Zwecke und dachte, ich würde teilen die Folge.
Der code unten erfordert die Erstellung von ein Modul und eine userform wie bereits angemerkt in den Kommentaren, oder Sie können download der
.xlsm
am Ende dieser Antwort.Benutzte ich die Windows-Zeitgeber-API für genaue und glatte countdown (und auch anpassbare runter auf ~100 Millisekunden timer-Auflösung, je nach Prozessor. Es gibt sogar einen "tick tock" sound.
Legen Sie ein neues Modul und speichern Sie es als
modUserFormTimer
. Fügen Sie zwei Formular-Steuerelement-Schaltflächen Sie zu dem Arbeitsblatt, beschriftet mit Start Timer und Stop Timer und zugeordnet VerfahrenbtnStartTimer_Click
undbtnStopTimer_Click
.Nächsten, eine userform erstellen, speichern Sie es als
frmTimer
. Fügen Sie ein Textfeld namenstxtCountdown
. Set propertyShowModal
zuFalse
. Fügen Sie folgenden code-Fenster des Formulars:.xksm.
hierHinweis das, denn es enthält VBA-Makros, die Datei könnte möglicherweise legen Sie Ihr Viren-scanner (wie jede andere nicht-lokale Datei mit VBA). Wenn Sie besorgt sind, laden Sie keine, und stattdessen bauen Sie sich mit den Informationen zur Verfügung gestellt.)
InformationsquelleAutor ashleedawg
Wie etwa verschieben Sie alle den code in der 'Timer' - Modul.
Rufen Sie nun aus dem mainform:
Um Fehler zu vermeiden, fügen Sie hinzu:
Wich trigger:
InformationsquelleAutor user1575005