Excel windows定时器vba更改速度

Excel windows定时器vba更改速度,excel,vba,winapi,timer,Excel,Vba,Winapi,Timer,我正在使用VBA中的windows计时器API每0.5s处理一次sub。我希望能够在计时器运行时更改timerproc速度。不幸的是,StartTimer sub在开始时只调用一次。关于如何修改代码以改变速度(比如0.25秒)有什么想法吗 通过调用SetTimer创建计时器时,将一次性指定计时器间隔。如果需要修改间隔,则需要先调用KillTimer重新创建计时器,然后使用新间隔调用SetTimer。对代码进行以下修改 Public TimerID As Long Public TimerSeco

我正在使用VBA中的windows计时器API每0.5s处理一次sub。我希望能够在计时器运行时更改timerproc速度。不幸的是,StartTimer sub在开始时只调用一次。关于如何修改代码以改变速度(比如0.25秒)有什么想法吗


通过调用
SetTimer
创建计时器时,将一次性指定计时器间隔。如果需要修改间隔,则需要先调用
KillTimer
重新创建计时器,然后使用新间隔调用
SetTimer

对代码进行以下修改

Public TimerID As Long
Public TimerSeconds As Single
Public TimerRunning As Boolean

Sub stopTimer()
    On Error Resume Next
    KillTimer 0&, TimerID
    TimerRunning = False
End Sub

Sub StartTimer(Optional RerunSpeed As Double = 0.5)
    If TimerRunning Then stopTimer
    TimerSeconds = RerunSpeed
    TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
    TimerRunning = True
End Sub
您可以使用备用时间间隔对
StartTimer
子过程进行后续调用。如果计时器当前处于活动状态,它将停止并以新的间隔恢复;e、 g.
StartTimer 0.25

Public TimerID As Long
Public TimerSeconds As Single
Public TimerRunning As Boolean

Sub stopTimer()
    On Error Resume Next
    KillTimer 0&, TimerID
    TimerRunning = False
End Sub

Sub StartTimer(Optional RerunSpeed As Double = 0.5)
    If TimerRunning Then stopTimer
    TimerSeconds = RerunSpeed
    TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
    TimerRunning = True
End Sub