VBA中施用API函数SetTimer和KillTimer做定时器发生死机现象

fieldset{padding:10px;}

VBA中使用API函数SetTimer和KillTimer做定时器发生死机现象?请高手帮忙看看定时器,为啥我在VBE中点击停止运行的按钮后,代码仍然不断的在循环,也就是说VBE调试窗口的停止按钮并没有真正的关掉程序;这种情况经常会导致有该定时器的程序发生死机或因错误引起的工作簿的关闭。在模块中的代码如下:

PrivateDeclareFunctionSetTimerLib"user32.dll"(ByValhwndAsLong,ByValnIDEventAsLong,ByValuElapseAsLong,ByVallpTimerFuncAsLong)AsLongPrivateDeclareFunctionKillTimerLib"user32.dll"(ByValhwndAsLong,ByValnIDEventAsLong)AsLongPubliclTimerIDAsLongPrivateConstlDuration=300PublicSubStart_Timer()IflTimerID=0ThenlTimerID=SetTimer(0&,0&,lDuration,AddressOfontime)ElseCallStop_TimerlTimerID=SetTimer(0&,0&,lDuration,AddressOfontime)EndIfEndSubPrivateSubStop_Timer()KillTimer0&,lTimerIDEndSubPrivateSubontime()Dima,b,ca=1+2EndSub

在窗体中的代码如下:

PrivateSubUserForm_Initialize()CallStart_TimerEndSub

当窗体被show出来的时候就开始触发定时器了,我怎么关调试窗口的“终止调试”按钮都没法关掉代码循环。

——解决方案——————————————————–PrivateDeclareFunctionSetTimerLib”user32.dll”(ByValhwndAsLong,ByValnIDEventAsLong,ByValuElapseAsLong,ByVallpTimerFuncAsLong)AsLongPrivateDeclareFunctionKillTimerLib”user32.dll”(ByValhwndAsLong,ByValnIDEventAsLong)AsLongPubliclTimerIDAsLongPrivateConstlDuration=300PrivateSubUserForm_Initialize()lTimerID=SetTimer(0&,0&,lDuration,AddressOfontime)EndSubPrivateSubUserForm_termanite(Terminate)KillTimer0&,lTimerIDlTimerID=0EndSubPrivateSubontime()Dima,b,ca=1+2EndSub背起简单的行攘,沐浴自由的风。

VBA中施用API函数SetTimer和KillTimer做定时器发生死机现象

相关文章:

你感兴趣的文章:

标签云: