欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 除了sleep函数(会假死),VBA延时如何简单的实现?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5548人关注过本帖树形打印复制链接

主题:除了sleep函数(会假死),VBA延时如何简单的实现?

帅哥哟,离线,有人找我吗?
qq代人发帖
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:18691 积分:0 威望:0 精华:0 注册:2013/7/15 9:22:16
除了sleep函数(会假死),VBA延时如何简单的实现?  发帖心情 Post By:2017/10/27 16:59:26 [只看该作者]

请教:除了sleep函数(会假死),VBA延时如何简单的实现?

 回到顶部
帅哥哟,离线,有人找我吗?
FexTel
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:5960 积分:0 威望:0 精华:2 注册:2014/6/12 11:29:04
  发帖心情 Post By: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某些过程的执行是受定时器控制的




金字塔—专业程序化交易量化投资平台

产品部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
低收益
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:6 积分:0 威望:0 精华:0 注册:2017/5/17 12:37:04
试过了,会假死。  发帖心情 Post By: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
会假死

 回到顶部
帅哥哟,离线,有人找我吗?
无为剑
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:2437 积分:0 威望:0 精华:0 注册:2016/3/5 22:53:41
  发帖心情 Post By:2017/10/27 19:01:37 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By: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 执行后续代码


 回到顶部