以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  为什么KillTimer没起作用?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=68002)

--  作者:dwjgwsm
--  发布时间:2014/7/29 16:38:55
--  为什么KillTimer没起作用?
Sub cs()

Call Application.SetTimer(0,5*1000) 
if time> "16:30:40" then call Application.KillTimer(0)

\'if time> "16:30:40" then
\'  application.msgout "yes"
\'else
\'  application.msgout "no"
\'end if

End Sub

Sub Application_Timer(ID)
Application.msgout Cdate(time) & ",0号计时器触发了"
End Sub

16:29:59,0号计时器触发了
16:30:04,0号计时器触发了
16:30:09,0号计时器触发了
16:30:14,0号计时器触发了
16:30:19,0号计时器触发了
16:30:24,0号计时器触发了
16:30:29,0号计时器触发了
16:30:34,0号计时器触发了
16:30:39,0号计时器触发了
16:30:44,0号计时器触发了
16:30:49,0号计时器触发了
16:30:54,0号计时器触发了
16:30:59,0号计时器触发了
16:31:04,0号计时器触发了

[此贴子已经被作者于2014/7/29 16:39:21编辑过]

--  作者:sunni520
--  发布时间:2014/7/29 20:27:53
--  
时间格式不对,改成  time > TimeSerial( 16,30,40 )  再试试
--  作者:dwjgwsm
--  发布时间:2014/7/29 21:19:01
--  
没用!还是照样.
其实,time> "16:30:40"这个写法我是调试通过了的
[此贴子已经被作者于2014/7/29 21:19:28编辑过]

--  作者:dwjgwsm
--  发布时间:2014/7/29 21:22:16
--  

[此贴子已经被作者于2014/7/29 21:23:06编辑过]

--  作者:王锋
--  发布时间:2014/7/29 21:23:00
--  
Call Application.SetTimer(0,5*1000) 
if time> "16:30:40" then
application.msgout "yes"
call Application.KillTimer(0)
end if
 
加上调试语句看看killtimer代码行到底执行过没有

--  作者:dwjgwsm
--  发布时间:2014/7/29 21:38:07
--  
很神奇啊

单独调试
if time> "21:30:40" then          
application.msgout "yes"
else
application.msgout "no"
end if

这句是正确的,通过了的.但是按照王峰的写法调试
Call Application.SetTimer(0,5*1000) 
if time> "16:30:40" then
application.msgout "yes"
call Application.KillTimer(0)
end if
到了时间点竟然条件语句不能进入if的语句块,没输出"yes"!我也改成2楼的方法试过了,也是一样.何解???

--  作者:王锋
--  发布时间:2014/7/29 21:47:52
--  
Call Application.SetTimer(0,5*1000) 
application.msgout time
if time> "16:30:40" then
application.msgout "yes"
call Application.KillTimer(0)
end if
 
再加上调试语句看看time是个什么值,要学会自己独立调试,学会用逻辑思维解决问题

--  作者:dwjgwsm
--  发布时间:2014/7/29 22:16:19
--  
我知道了!因为if time> "16:30:40" then这句仅执行一遍,在程序刚刚运行的时候就执行过了, 所以,后面不存在再次运行该if语句的可能了!
--  作者:guotx2010
--  发布时间:2014/7/30 8:37:33
--  
使用Cdate(time)>Cdate("16:30:40")比较时间