哈哈哈,解决了,说说过程,大家分享一下。。。 原来ms一早也已经搞了个ActiveX的timer叫ietimer,下载: http://activex.microsoft.com/controls/iexplorer/x86/ietimer.cab 下载下来解压,是一个inf文件跟ocx文件,我直接安装inf文件,失败,原因不明。用regsvr32注册,成功。到excel的vba界面,这里需要注意,必须先引用了ietimer.ocx,才能在附加控件里看见一个timer object的选项,把它选中,就可以在userform里添加ietimer控件了,添加一个试试,除了外观界面比我们自己做的丑以外,功能上没有什么不同,退出excel再进入,嗯。。不会出现我上面说的那个警告信息了。这也好理解,是ms自己出来的控件,难道自己还信不过自己,自己警告自己吗? 再测试,把ietimer直接加上sheet去试试。。吾????还是跟我们自己做的控件一样,timer什么都不管,一直不能停下来。这。。。有点不大对吧。。。ms就出这等货色???再google。。。哈哈,找到了,在sheet上的ietimer不能这样简单的enabled=true/false就了事,还要写代码,参考: http://www.mrexcel.com/archive2/52200/60640.htm 依样画葫芦,果然可以控制timer的启停了。于是去到我们自己做的vbatimer的excel里,依样画葫芦,我的代码是这样的: Dim objTm As Object Sub StopTimer() Set objTm = Sheet1.OLEObjects("VBATIMER1") objTm.Object.Enabled = False End Sub Sub StartTimer() Set objTm = Sheet1.OLEObjects("VBATIMER1") With objTm.Object .Interval = 1000 .Enabled = True End With End Sub Sub CheckBox1_Change() If CheckBox1.Value Then StartTimer Else StopTimer End If End Sub Private Sub IeTimer1_Timer() End Sub Private Sub VBATIMER1_Timer() Label1.Caption = Now End Sub 退出设计模式,一切如预期运行,可通过改变checkbox的值控制timer的启停。 总结:在没有验证过给自己制作的vbatimer添加IobjectSafety接口是否可行的前提下,如果一定要在userform里加timer控件而又不想出现警告信息,看来只有暂时使用ietimer了。如果是直接加到sheet里作为窗体控件则完全可以使用自己制作的vbatimer。使用方法如上。我现在就准备这样做。 最后:感谢楼主发了这么一张好帖精贴,让我学到了不止一样东西。 |