网站首页 > 知识剖析 正文
【分享成果,随喜正能量】人心齐,泰山移。有一种力量可以无坚不摧,那就是团结的力量;有一种力量可以让人坚韧不拔,也是团结的力量。只要我们同心合力,定能度过难关。
《VBA代码解决方案》这套教程是我最早推出的教程,目前已经是第二版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一下把自己喜欢的代码摆好。
这套教程共三册,一百四十七讲,内容覆盖较广,也是初级和中级间的过度教程,改版后的内容主要是提供程序源码文件及代码修正为32位和64位兼用代码。今后一段时间会给大家陆续推出。今日的内容是第31讲:VBA“定时器”的实现
第三十一讲 利用VBA代码实现“定时器”功能
大家好,今日继续讲解我们的VBA代码第31讲,利用VBA代码实现“定时器”功能。
Excel VBA并没有提供定时器控件,但是用户可以通过Application对象的OnTime方法实现简单的定时器功能。
1 OnTime方法
应用于Application对象的OnTime方法能够安排一个过程在将来的特定时间运行,语法如下: expression.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
参数:
a) expression是必需的,返回一个Application对象。
b) EarliestTime是必需的,设置指定的过程开始运行的时间。使用Now + TimeValue(time)可以安排从现在开始经过一段时间之后运行某个过程,使用TimeValue(time)可以安排在指定的时间运行某个过程。
c) Procedure是必需的,设置要运行的过程名称。
d) LatestTime是可选的,设置过程开始运行的最晚时间。例如将参数LatestTime设置为EarliestTime+10,当时间到了EarliestTime时如果Excel不处于空闲状态,那么Excel将等待10秒,如果在10秒内Excel不能回到空闲状态,则不运行该过程。如果省略该参数,Excel将一直等待到可以运行该过程为止。
e) Schedule是可选的,如果其值为True(默认值),则安排一个新的OnTime过程,如果其值为False,则清除先前设置的过程。
2 实现定时器功能的代码及代码解读
如下面的代码所示:
Sub mynz_31_1() '利用VBA代码实现"定时器"功能
【代码见教程】
End Sub
代码解析:mynz_31_1过程,使用Application对象的OnTime方法循环调用MyStartTimer过程实现每隔一秒钟运行一次MyStartTimer过程,从而在B1单元格中不断地显示程序累计运行时间。
1)第2行代码将B1单元格的值在原有的数字上加1。
2)第3行代码使用OnTime方法在1秒后重新调用mynz_31_1过程,使B1单元格的值不断的加1,从而显示程序累计运行时间。
取消定时的代码如下:
Sub mynz_31_2() '利用VBA代码实现"定时器"功能
【代码见教程】
End Sub
代码解析:Sub mynz_31_2过程取消mynz_31_1过程的计时。
1) 第2行代码错误处理语句,因为如果还没有运行mynz_31_1过程而先运行mynz_31_2过程取消定时,程序会提示错误,因此使用On Error GoTo Line语句在错误发生时执行第7行代码显示一个提示消息框。
2)第3行代码将mynz_31_1过程的Schedule参数设置为False,取消定时设置。
先看下面的代码窗口:
运行窗口:
停止窗口:
今日内容回向:
1 OnTime 方法的作用是什么?
2 EXCEL中定时器是如何实现的?
本讲内容参考程序文件:VBA代码解决方案修订(1-48).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】爱心得匠意,则杰作在望。趁一切还来得及,做自己喜欢的事,就是一生最幸福的事!随着自己的热爱去做事,就没有不能成功的。
猜你喜欢
- 2025-03-13 掌握WinCC 脚本诊断:WinCC脚本报错?3分钟带你找到问题根源
- 2025-03-13 VBA+Excel实战: 让你的工作更高效
- 2025-03-13 一个很简单却又让女神无法拒绝的表白VBS代码
- 2025-03-13 西门子触摸屏VBScript编程系列教程(4)——编写延时子程序
- 2025-03-13 当前日期和时间、时间函数以及时间值
- 2025-03-13 如何在WINCC中使用报警声音?2种方式轻松实现
- 2025-03-13 vbs是什么
- 最近发表
-
- jQuery EasyUI使用教程:创建展开行详细编辑表单的CRUD应用
- CSDN免登陆复制代码的几种方法(csdn扫码登录怎么实现的)
- LayUi提高-Select控件使用(layui form select)
- 用 Playwright MCP 让 AI 改它自己写的屎山代码
- multiple-select.js中手动设置全选和取消全选
- 前端实现右键自定义菜单(html 自定义右键菜单)
- JavaScript脚本如何断言select下拉框的元素内容?
- 广州蓝景分享—实用的CSS技巧,助你成为更好的前端开发者
- MyBatis-Plus码之重器 lambda 表达式使用指南,开发效率瞬间提升80%
- Go语言之select的使用和实现原理(go select case)
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)