以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp)
-- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5)
---- 每次金字塔启动下面都会自动跳出消息窗口。 (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=160927)
|
-- 作者:qq代人发帖
-- 发布时间:2018/1/8 15:54:10
-- 每次金字塔启动下面都会自动跳出消息窗口。
请教两个问题:
1、为什么我写了这个模块后,每次金字塔启动,下面都会自动跳出消息窗口如下 这样的话,我岂不是每次启动金字塔,所有的VBA模块都会启动,那样电脑会很慢,我要怎么避免自己编写的VBA的模块启动? 2、我想在程序里面计数0号计时器的次数,但是不能计算次数,总是连续的显示为1次,,而不是1次,2次,3次这种,要怎么做?? 3、Application_VBAStart() 和 Application_Timer(ID) Application_VBAEnd() 是不是金字塔自带的函数???金字塔执行这些函数时是怎么执行的???
Sub Application_VBAStart() \'Rem ;Application启动后的事件 Call Application.SetTimer(0,2*1000) \'设置一个系统定时器,指定一个定时值,每当发生超时,则发生一个Timer事件,并返回ID。 Call Application.SetTimer(9,5*1000) End Sub
Sub Application_Timer(ID) \'这里不懂,为什么非要加上ID这个字符串 If ID=0 Then i = i+1 Application.MsgOut CDate(time) & ",0号计时器触发了" & i & "次" End if If ID=9 Then j = j+1 Application.MsgOut CDate(time) & ",9号计时器触发了" & j & "次" End if End Sub
Sub Application_VBAEnd() Call Application.KillTimer(0) Call Application.KillTimer(9) End Sub ==============
此主题相关图片如下:1.png

|
-- 作者:yukizzc
-- 发布时间:2018/1/8 16:41:08
--
工具-启动-允许自动启动vba去掉勾
2、dim i代码开头设置一个全局的变量,否者你是局部变量每次都是初始0开始的
3、这个就是金字塔封装好的,你按照说明使用就可以了
|
-- 作者:死亡旋律
-- 发布时间:2018/1/8 16:56:39
--
也就是说 Application_VBAStart() 、 Application_Timer(ID) 、Application_VBAEnd() 这三个函数是金字塔自带的是吗??
|
-- 作者:死亡旋律
-- 发布时间:2018/1/8 16:59:44
--
我上述例子程序改成了
Sub Application_VBAStart() \'Rem ;Application启动后的事件 Call Application.SetTimer(0,2*1000) \'设置一个系统定时器,指定一个定时值,每当发生超时,则发生一个Timer事件,并返回ID。 Call Application.SetTimer(9,5*1000) If ID=0 Then i = i+1 Application.MsgOut CDate(time) & ",0号计时器触发了" & i & "次" End if If ID=9 Then j = j+1 Application.MsgOut CDate(time) & ",9号计时器触发了" & j & "次" End if End Sub
Sub Application_VBAEnd() Call Application.KillTimer(0) Call Application.KillTimer(9) End Sub
结果金字塔启动后,消息窗口就只显示两次1,,也就是说,分别在2秒和9秒显示了一次1,就再也不显示了。不明白为什么在这种情况下,计时器就只触发一次??可以解释一下吗??不是很懂。。。
|
-- 作者:yukizzc
-- 发布时间:2018/1/8 20:02:39
--
这么写
此主题相关图片如下:53ew%70{@9pdj`n5_urli.png

|