电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

完整功能的VBATimer类

完整功能的VBATimer类_第1页
1/7
完整功能的VBATimer类_第2页
2/7
完整功能的VBATimer类_第3页
3/7
完整功能的VBA Timer类 2010 年7 月2 日 评论 发表评论 VB 中的Timer 控件提供了很好的计时器功能,VBA 的原始功能中没有包括Timer 控件,取而代之的是Application.OnTime 方法,但是在定时重复运行某个过程的情况下OnTime 方法使用并不太方便。 简单的API Timer函数 使用API 函数同样可以实现类似的OnTime 功能,并且可以方便的循环运行指定的程序。只需要两个简单的API 函数 SetTimer 和 KillTimer。 Private Declare Function SetTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long, _ ByVal uElapse As Long , ByVal lpTimerFunc As Long) As Long Private Declare Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long Public lTimerID As Long Sub StartTimer(lDuration As Long) If lTimerID = 0 Then lTimerID = SetTimer(0&, 0&, lDuration, AddressOf OnTime) Else Call StopTimer lTimerID = SetTimer(0&, 0&, lDuration, AddressOf OnTime) End If End Sub Sub StopTimer() KillTimer 0&, lTimerID End Sub Sub OnTime() ' 计时器触发后运行的代码放在这 ' ... Cells(1, 1) = Now End Sub 示例下载:Box | SkyDrive 单个事件的Timer类 我们也可以用这两个API 函数创建一个类来完全模拟VB 中Timer 控件的方法,同时实现事件触发。这样做有一个困难,在类模块中不能使用AddressOf 函数。一种方法是利用标准模块来获取回调函数的地址然后再类模块中调用。 创建一个名称为 clsTimer 的类模块,代码如下: Option Explicit Private Declare Function SetTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long, _ ByVal uElapse As Long , ByVal lpTimerFunc As Long) As Long Private Declare Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long Private bEnable As Boolean Private lDuration As Long Private lTimerId As Long Public Event Timer() Public Property Let Enabled(ByVal vData As Boolean) bEnable = vData If bEnable = True Then StartTimer Else EndTimer End If End Prope...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

完整功能的VBATimer类

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部