2016-06-20 5 views
0

Ich habe eine VBA Sub, die bei der Änderung jeder Stunde ausgeführt werden muss. Also um 7:00 Uhr, 8:00 Uhr usw. ... Im Moment kann ich es alle 60 Minuten laufen lassen, aber damit es zu jeder vollen Stunde läuft, muss der Bediener den Timer genau zur vollen Stunde starten. mein Code, der für diese im mit ist wie folgt:excel application.ontime, um jede Stunde zu laufen, unabhängig davon, wann der Timer gestartet wird

Public RunWhen As Double 
Public Const cRunIntervalSeconds = 3600 
Public Const cRunWhat = "transfer" 
----------------------------------------------------------------------- 
Sub StartTimer() 
    RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds) 
    Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _ 
     Schedule:=True 

End Sub 

Ich habe einen Weg zu finden versucht, dieses zu erhalten, genau auf die Stunde für eine Weile jetzt erfolglos zu laufen, jeder Ort, wo ich mich gerade aussehen sagt zu tun genau das, was ich bereits getan habe und stelle sicher, dass ich genau zur vollen Stunde starte.

zum Beispiel: Wenn der Operator nicht bis 7:10 an die Station kommt und den Knopf drückt, der den Code ausführt, möchte ich immer noch den Sub namens "Transfer" um 8:00 und dann um 9:00 ausführen und so weiter.

Wie würden Sie vorschlagen, dass ich diesen Code modifiziere oder hinzufüge, damit er das erreicht, was ich versuche zu erreichen? danke für die Hilfe!

+1

bessere Nutzung 'Now() + Timeserial (1, - Minute (Jetzt()), -Sekunde (Jetzt())), um genau die nächste volle Stunde zu erhalten ... –

+0

Um um 13:00 Uhr zu laufen - 'Application.OnTime TimeValue (" 13:00:00 ")," ProcName " ' –

+0

@AlexK. Ich brauche es aber jede einzelne Stunde zu laufen, nicht nur die eine Stunde die ich im Timer tippe – Vbasic4now

Antwort

2

wie gewünscht, meine Lieblingsformel als Antwort:

RunWhen = Int(24 * Now + 1)/24 

, weil: es ist kurz und sollte 100% selbsterklärend sein: D

+1

Danke Dirk, schöne Formel! –