摘要:《VBA经典应用69例》(版权10178981),是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中要利用好VBA。本
《VBA经典应用69例》(版权10178981),是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中要利用好VBA。本套教程共三册六十九个专题,今日内容:VBA经典应用69例应用8:利用VBA,预设某个程序在晚上21点运行
【分享成果,随喜正能量】167 引擎利用后退的力量,引发更大的动能;空气经过压缩,更具爆破的威力。所谓"退一步想,海阔天空。"正可点破我们迷妄执着的盲点。
这一专题,我们讲解利用VBA来预设某个任务自动运行。这讲的内容在VBA中也是比较有用的,可以完成诸如动画的效果,以及各种自己期望的任务在某个时间自动运行。我们主要是利用Application.OnTime来完成这种设置。
OnTime与Application.Wait方法非常相似,使用这两种方法,可以设计在特定时间运行某项任务(过程)。OnTime和Wait的一个主要区别是,对于Wait方法,Excel的操作将被挂起,但OnTime不会冻结你的计算机。运行OnTime语句后,可以继续使用Excel工作簿。
在上面的例子中我们预设的是某个程序在现在之后的某个时间后执行,那么如何预设某个过程在某个时刻运行呢?我们看下面的代码,这段代码是预设一个程序在晚上"20:45:00"点执行。代码如下:
Sub mynzB
Application.OnTime TimeValue("20:45:00"), "mynz_1"
End Sub
Sub mynz_1
MsgBox "现在的时间是20:45:00!"
End Sub
代码的截图
代码的讲解:Application.OnTime TimeValue("20:45:00"), "mynz_1" 是设置某个过程的运行时间为"20:45:00",是哪个过程呢?是"mynz_1"过程。
下面看代码的运行结果:
我们再来看一下用Application.Wait写的代码:
Application.Wait "20:45:00"
mynz_1
如果用这个代码,运行后和Application.OnTime的代码有什么不同呢?请学员思考一下。下面我们讲解如何利用Application.OnTime预设某个宏在第二天运行,例如,我们可以安排一个宏在午夜后启动。我们首先定义时间,先设置为午夜,然后添加小时和分钟。
下面看我给出代码,是设置一个过程在第二天凌晨2时运行。
Sub mynzC
Dim startTime
'这是午夜时间午夜0:00:00
startTime = DateSerial(Year(Now), Month(Now), Day(Now) + 1)
'加上小时变成设置的时间
startTime = startTime + TimeValue("00:02:00")
MsgBox startTime
Application.OnTime startTime, "mynz_2"
End Sub
Sub mynz_2
MsgBox "现在的时间是" & Now
End Sub
代码截图:
代码讲解:上述代码中 startTime = DateSerial(Year(Now), Month(Now), Day(Now) + 1)是首先设置午夜的时间,然后用startTime = startTime + TimeValue("00:02:00")再加上两个小时即可。
代码的运行:这里我仅在代码运行测试中弹出一个EarliestTime参数的值,如下:
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
来源:VBA语言专业教育