以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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
图片点击可在新窗口打开查看