以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  除了sleep函数(会假死),VBA延时如何简单的实现?  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=159024)

--  作者:qq代人发帖
--  发布时间:2017/10/27 16:59:26
--  除了sleep函数(会假死),VBA延时如何简单的实现?
请教:除了sleep函数(会假死),VBA延时如何简单的实现?

--  作者:FexTel
--  发布时间:2017/10/27 17:05:22
--  

4、该示例使用金字塔的VBS系统调用WINDOWS API中的Sleep函数来实现延时功能
参数为延时毫秒数

Sub StockSleep(slSecond)
Set Wrap = CreateObject("DynamicWrapper")
Wrap.Register "KERNEL32.DLL", "Sleep","i=u","r=l"
Wrap.Sleep(slSecond)
End Sub

 

 

 

另外你VB某些过程的执行是受定时器控制的



--  作者:低收益
--  发布时间:2017/10/27 17:14:01
--  试过了,会假死。
Sub StockSleep(slSecond)
Set Wrap = CreateObject("DynamicWrapperX")
Wrap.Register "KERNEL32.DLL", "Sleep","i=u","r=l"
Wrap.Sleep(slSecond)
End Sub
会假死

--  作者:无为剑
--  发布时间:2017/10/27 19:01:37
--  

没有简单方案,不假死你可以采取下面2个解决方案
1,使用定时器,触发另一个过程完成延时目的

2,自己做个循环函数 参考 http://www.weistock.com/bbs/dispbbs.asp?BoardID=5&ID=62158&skin=0


--  作者:guotx2010
--  发布时间:2017/10/29 10:17:25
--  
记录上次执行的时间,下次执行前,取出上次的时间,跟最新的时间比较,计算间隔的秒数,没有达到就不执行,达到就执行。
1、记录执行时间,可以记录到全局变量,如:call document.SetExtString("LastTime",Cdate(Time)).
2、执行代码前,取出全局变量LastTime,如:sLastTime=document.GetExtString("LastTime").
3、判断上次执行时间与最新时间的间隔秒数,nMs=DateDiff("s",sLastTime,Cdate(Time))
4、判断秒数是否超过你自己需要延时的秒数,没有就不执行,超过就执行,如:if nMs>10 then 执行后续代码