请教两个问题:
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
工具-启动-允许自动启动vba去掉勾
2、dim i代码开头设置一个全局的变量,否者你是局部变量每次都是初始0开始的
3、这个就是金字塔封装好的,你按照说明使用就可以了
我上述例子程序改成了
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,就再也不显示了。不明白为什么在这种情况下,计时器就只触发一次??可以解释一下吗??不是很懂。。。
这么写

此主题相关图片如下:53ew%70{@9pdj`n5_urli.png