ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: winland

[分享] VBA下完全功能的Timer类

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-4-11 13:50 | 显示全部楼层
本帖已被收录到知识树中,索引项:Windows API应用
收藏借鉴参考学习,谢谢楼主的分享

TA的精华主题

TA的得分主题

发表于 2011-4-22 14:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢分享,学习学习。

TA的精华主题

TA的得分主题

发表于 2011-4-23 19:30 | 显示全部楼层
谢谢版主分享,学习学习。

TA的精华主题

TA的得分主题

发表于 2011-5-7 11:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢分享。。。。

TA的精华主题

TA的得分主题

发表于 2011-5-7 15:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
很好!!!!!

TA的精华主题

TA的得分主题

发表于 2011-5-23 14:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
很好很赞

TA的精华主题

TA的得分主题

发表于 2011-6-1 11:17 | 显示全部楼层
问一个很笨的问题

这个类用在 模块 上为什么不行?
我的写法是这样的:
Public cTimer1 As clsTimer  ' 在网上查这样写就没有类的事件了应该如何处理呢

Sub StarTimer1()         '开启  on time   功能!
    Set cTimer1 = New clsTimer
    cTimer1.Enabled = True
    cTimer1.Interval = 10000 '10S   
End Sub

Sub CloseTimer1() '关闭on time功能!
   On Error Resume Next
   cTimer1.Enabled = False
   Set cTimer1 = Nothing
End Sub

Private Sub cTimer1_Timer()
  Call GetMsg                             '在这里打了个断一点动静都没有!
End Sub

对类知得太少了,请指教
谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-9 20:30 | 显示全部楼层

回复 187楼 sunsoncheng 的帖子

要用到类的事件的话,还是需要在类模块(包括窗体,工作表模块)里使用。
在标准模块里使用定时器的话,你应该知道使用Application.onTime
如果觉得用递归比较麻烦的话,也可以用API函数来实现同样的onTime功能。
  1. Private Declare Function SetTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long, _
  2.                         ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
  3. Private Declare Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

  4. Public lTimerID As Long

  5. Sub StartTimer(lDuration As Long)
  6.     If lTimerID = 0 Then
  7.         lTimerID = SetTimer(0&, 0&, lDuration, AddressOf OnTime)
  8.     Else
  9.         Call StopTimer
  10.         lTimerID = SetTimer(0&, 0&, lDuration, AddressOf OnTime)
  11.     End If
  12. End Sub
  13. Sub StopTimer()
  14.     KillTimer 0&, lTimerID
  15. End Sub
  16. Sub OnTime()
  17.     Cells(1, 1) = Now
  18. End Sub
复制代码

[ 本帖最后由 winland 于 2011-6-9 20:32 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-6-28 09:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢楼主。正好要用。

使用ontime和使用底层内存调用制作的timer有什么不同么

TA的精华主题

TA的得分主题

发表于 2011-7-6 21:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sadasdeasdas
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-3 11:18 , Processed in 0.046642 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表