Таймер тревоги в Excel VBA - PullRequest
       37

Таймер тревоги в Excel VBA

4 голосов
/ 02 февраля 2011

Я создал календарь для отслеживания задач и аналогичных элементов в Excel 2003. Мне нужно уметь настраивать таймер через VBA.Примерно так:

run_in_x_secs ( timetowait, function to exec)

Есть ли способ сделать это в Excel VBA или я должен попытаться найти сигнал тревоги для запуска через командную строку и запустить его из VBA.Как бы вы это сделали?

Ответы [ 3 ]

3 голосов
/ 02 февраля 2011

Это должно сработать:

Public Sub RunSubInXSeconds(secondsToWait As Long, nameOfFunction As String)
    Application.OnTime Now + secondsToWait/(24# * 60# * 60#), nameOfFunction 
End Sub

Хотя вы должны быть немного осторожнее с OnTime, особенно если вы собираетесь настроить его на ожидание в течение длительного периода времени ... Например. если вы закроете рабочую книгу до того, как истечет таймер и сработает подпрограмма, вы можете открыть свою рабочую книгу для ее запуска. Смущает, если вы этого не ожидаете!

3 голосов
/ 02 февраля 2011
Public Sub tt()

timerset = TimeValue("01:00:00") 'the time you want
Application.OnTime timerset, "myfun"

End Sub

Sub myfun()
 'do whatever you want
End Sub
2 голосов
/ 14 декабря 2011

еще два варианта:

'Option 1
Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

Sub Sleep()
 Sleep 1000   'whait 1 second
End Sub

'Option 2
Sub MyWaitMacro()
  newHour = Hour(Now())
  newMinute = Minute(Now())
  newSecond = Second(Now()) + 3
  waitTime = TimeSerial(newHour, newMinute, newSecond)
  Application.Wait waitTime
End Sub
...