VBA定时执行某程序
OnTime 方法
参阅应用于示例特性安排一个过程在将来的特定时间运行(既可以是具体指定的某个时间,也可以是指定的一段时间之后)。
expression.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
expression 必需。该表达式返回一个 Application 对象。
EarliestTime Variant 类型,必需。设置过程开始运行的时间。
Procedure String 类型,必需。设置要运行的过程名。
LatestTime Variant 类型,可选。过程开始运行的最晚时间。例如,LatestTime 参数设为 EarliestTime + 30,当时间到了 EarliestTime 时,如果由于其他程序处于运行状态 Microsoft Excel 不处于“就绪”、“复制”、“剪切”或“查找”模式,则 Microsoft Excel 将等待 30 秒让第一个过程先结束运行。如果 30 秒内 Microsoft Excel 不能回到“就绪”模式,则不运行此过程。如果省略该参数,Microsoft Excel 将一直等待到可以运行该过程为止。
Schedule Variant 类型,可选。如果该值为 True,则安排一个新的 OnTime 过程。如果该值为 False,则清除先前设置的过程。默认值为 True。
说明
使用 Now + TimeValue(time) 可安排经过一段时间(从现在开始计时)之后运行某个过程。使用 TimeValue(time) 可安排某个过程只运行指定的时间。
示例
本示例设置 15 秒后运行 my_Procedure 过程,从现在开始计时。
Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"
本示例设置 my_Procedure 在下午 5 点开始运行。
Application.OnTime TimeValue("17:00:00"), "my_Procedure"
本示例撤消前一个示例对 OnTime 的设置。
Application.OnTime EarliestTime:=TimeValue("17:00:00"), _
Procedure:="my_Procedure", Schedule:=False
Sub hi()
Debug.Print "hello"
End Sub Sub AutoRun()
hi
Application.OnTime TimeValue("14:03:00"), "AutoRun"
End Sub
在工作中我们经常需要定时执行某程序,或者有时需要每隔特定时间执行某个程序,例如我们需要每15分钟执行一次保存的动作,这个功能在VBA中是通过Application.OnTime函数来实现的。这个函数有两个参数,一个是执行程序的时间,另一个是要执行的程序名称。下面来看一代简单代码
Sub macro1()
Dim NewTime As Date
NewTime = Now + TimeValue("00:00:05")
Application.OnTime NewTime, "Macro2"
End SubSub macro2()
MsgBox "你执行了程序Macro2"
End Sub
上面Macro1代码的意思是在5秒之后执行宏Macro2,在Macro1中我们定义了一个日期变量NewTime,其值是当前时间加上5秒,注意下这里时间的写法,"hh:mm:ss"时、分、秒。之后用到application.ontime函数,两个参数上面说过了,一个代表时间,一个代表要执行的程序。要想在5秒之后执行Macro2,你首先要手动运行Macro1,这样5秒之后才会运行Macro2,这点很重要,不要以为写出了这个代码其就可以自动运行了。
上面只是在特定时间执行某程序,那现在如果我们要循环执行某程序怎么办?比如我们每隔10秒钟就要执行一次自动保存的动作。这也好办,看下面的代码
Sub 自动保存()
Dim NewTime
NewTime = Now + TimeValue("00:00:05")
ThisWorkbook.Save
Application.OnTime NewTime, "自动保存"
End Sub
在这里我们没有用两个程序,而是将要执行的代码也嵌入到了Application.OnTime程序中,Application.OnTime NewTime, "自动保存",看到了吧,我们执行的是程序自身,每5秒调用一下本程序,运行的时候又设定了5秒之后执行本程序,形成了一个循环,这就达到了我们定时循环执行某动作的目的。
Sub hi()
Debug.Print "hello"
End Sub Sub AutoRun()
hi
Application.OnTime Now + TimeValue("00:00:05"), "AutoRun"
End Sub
上面说过要这些程序首先要手动运行一次,如果想要打开工作簿就自动执行,那在Open事件中调用一下就可以了
Private Sub Workbook_Open()
Call 自动保存
End Sub
Public TimerEnabled As Boolean Sub EnableTimer() '开始
TimerEnabled = True
StartTimer
End Sub Sub DisableTimer() '停用
TimerEnabled = False
End Sub Sub StartTimer() '注意改代码需要放在模块级
If TimerEnabled = True Then
Application.OnTime Now + TimeValue("00:00:01"), "StartTimer" '每1秒钟自动运行一次
Work '需要每秒运行的代码
End If
End Sub Sub Work()
Sheet1.Cells(1, 1) = Sheet1.Cells(1, 1) + 1
End Sub
VBA定时执行某程序的更多相关文章
- Linux 下用 crontab 设置定时执行python 程序
Linux 下用 crontab 设置定时执行python 程序 方法/步骤 1,先大概了解crontab,/etc/crontab 就是crontab 的配置文件. crontab命令详解可以查 ...
- Shell脚本实现每个工作日定时执行指定程序
我们可能会遇到这样的情景:必须在每个工作日定时执行Linux服务器上的某个程序.那么有没有办法实现这一功能呢?答案是肯定的.我们可以运用Shell脚本简单实现这一功能. 原理很简单,Shell脚本内部 ...
- [MVC框架]利用@Scheduled注解创建定时执行的程序
新写的项目中有一个地方要用到定时器,然后就用了spring的@Scheduled注解,顺手就给记录下来了,免得下次用的时候还要翻以前的项目,顺便分享出来,给没用过的兄弟姐妹们做个参考. 这次主要用的是 ...
- vb 定时执行php程序
托盘模块 Option Explicit Public Const NIF_ICON = &H2 Public Const NIF_MESSAGE = &H1 Public Const ...
- 最简单的???ubuntu 通过crontab定时执行一个程序
crontab在liunx系统中下载,我默认是认为下载安装了的.. crontab貌似只能在liunx系统中存在,如果是windows系统我不知道 创建一个名为jiaoben的文件夹存储sh文件,进入 ...
- Windows自动执行应用程序或脚本(可以通过写bat文件定时关机等)
1. Windows每天定时执行某个应用程序 1.1 右键我的电脑选择管理,并选择任务计划程序,如下 演示 --- 1.2 创建基本任务 演示 1.3 Windows每天定时关机设置参数 演示 1. ...
- 使用System.Timers.Timer类实现程序定时执行
使用System.Timers.Timer类实现程序定时执行 在C#里关于定时器类有3个:System.Windows.Forms.Timer类.System.Threading.Timer类和Sys ...
- webapi + windows计划 + mshta 实现定时执行任务
当然,实现定时任务有更好的操作方式,比如方式一:asp.net mvc+quartz.net +corn +webapi,asp.net mvc做任务管理的平台,使用CronTrigger做定时触发, ...
- C#定时执行
代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...
随机推荐
- P2P原理(转)
P2P(Peer to Peer)对等网络 P2P技术属于覆盖层网络(Overlay Network)的范畴,是相对于客户机/服务器(C/S)模式来说的一种网络信息交换方式.在C/S模式中,数据的分发 ...
- 关于django1.8版本的静态文件配置
环境:Python3.5.4,django1.8.1. 在页面使用js时,总是提示404找不到js文件. 于是,看看了settings文件 好像也没什么毛病.导入的方式也换了很多种,总是不行,于是只好 ...
- MySQL驱动和数据库字符集设置不搭配
刚才控制台又报这个错,这是代表MySQL驱动和数据库字符集设置不搭配: 错误: "...Initial client character set can be forced via the ...
- Yii1自定义 CGridView 中的操作按钮中 CButtonColumn 选项
Yii可以使用CButtonColumn自定义按钮及列样式. 效果展示 <?php $this->widget('zii.widgets.grid.CGridView', array( ' ...
- Docker Kubernetes 创建管理 Pod
Docker Kubernetes 容器扩容与缩容 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 管理节点:192.168.1.79 ...
- [pytorch修改]dataloader.py 实现darknet中的subdivision功能
dataloader.py import random import torch import torch.multiprocessing as multiprocessing from torch. ...
- libcurl返回常见错误码
转载:https://blog.csdn.net/kenkao/article/details/46875571 转载:http://www.cnblogs.com/wainiwann/p/34929 ...
- Bootstrap3基础 table-condensed 表格中的单元格紧凑一些
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...
- Qt自定义阴影效果和QOpenGLWidget冲突导致控件不刷新
Qt5.6.2版本存在这样一个问题(其它版本未测试),当main函数中设置了application.setAttribute(Qt::AA_NativeWindows)(用于使得每个子界面都可以获取w ...
- Dubbo和Spring Cloud微服务架构对比
https://blog.csdn.net/zhangweiwei2020/article/details/78646252