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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 每次金字塔启动下面都会自动跳出消息窗口。

   

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


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

主题:每次金字塔启动下面都会自动跳出消息窗口。

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


加好友 发短信
等级:超级版主 帖子:18691 积分:0 威望:0 精华:0 注册:2013/7/15 9:22:16
每次金字塔启动下面都会自动跳出消息窗口。  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2018/1/8 16:41:08 [只看该作者]

工具-启动-允许自动启动vba去掉勾

2、dim i代码开头设置一个全局的变量,否者你是局部变量每次都是初始0开始的

3、这个就是金字塔封装好的,你按照说明使用就可以了


 回到顶部
帅哥哟,离线,有人找我吗?
死亡旋律
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:69 积分:0 威望:0 精华:0 注册:2017/8/24 18:11:13
  发帖心情 Post By:2018/1/8 16:56:39 [只看该作者]

也就是说 Application_VBAStart() 、 Application_Timer(ID) 、Application_VBAEnd()  这三个函数是金字塔自带的是吗??

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


加好友 发短信
等级:新手上路 帖子:69 积分:0 威望:0 精华:0 注册:2017/8/24 18:11:13
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2018/1/8 20:02:39 [只看该作者]

这么写


图片点击可在新窗口打开查看此主题相关图片如下:53ew%70{@9pdj`n5_urli.png
图片点击可在新窗口打开查看

 回到顶部