VBA经典应用69例应用8:取消预设任务
《VBA经典应用69例》(版权10178981),是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中要利用好VBA。本套教程共三册六十九个专题,今日内容:VBA经典应用69例应用8:取消预设任务
【分享成果,随喜正能量】197 不要在乎他人的评论,不必理论与他人有关的是非,你只要做好自己就够了。苔花如米小,也学牡丹开。无论什么时候,都要有忠于自己的勇气,去做喜欢的事,去认识喜欢的人,去过期待的日子,去圆满自己的心。有理想,有热爱,然后全力以赴。。
应用8 利用VBA,完成自动运行任务的预设
这一专题,我们讲解利用VBA来预设某个任务自动运行。这讲的内容在VBA中也是比较有用的,可以完成诸如动画的效果,以及各种自己期望的任务在某个时间自动运行。我们主要是利用Application.OnTime来完成这种设置。
OnTime与Application.Wait方法非常相似,使用这两种方法,可以设计在特定时间运行某项任务(过程)。OnTime和Wait的一个主要区别是,对于Wait方法,Excel的操作将被挂起,但OnTime不会冻结你的计算机。运行OnTime语句后,可以继续使用Excel工作簿。
5 取消预设任务
我们在上面的各个例子中分别讲解了任务预设的各种应用场景,这段的内容是我们如何取消这种预设的任务。在运行OnTime语句以创建计划任务之后,可以通过再次运行OnTime语句来取消它,该语句的值与EarliestTime和Procedure相同,但将schedule参数设置为False。
以下声明取消了mynzB的计划任务。
例如,我们mynzB 过程的预设如下:
Application.OnTime TimeValue("20:45:00"), "mynz_1",我们为了取消这种预设可以用下面的代码:
Sub mynzS()
Application.OnTime EarliestTime:=TimeValue("20:45:00"), Procedure:="mynz_1", Schedule:=False
End Sub
代码截图:
在上述mynzS取消预设设置之前,mynzB是在开启状态的,如果没有开启,我们看下面的运行结果:
会提示给用户关联失败。
如何避免这种意外出现呢?我们要设置当预设开启后,才能取消,如果没有预设是无法取消的。我们看下的完整代码,这段代码是点击按钮mynzE后在“A1”单元格数字累加,点击mynzF按钮后停止。
Sub mynzE()
myUU = True
Worksheets(1).Shapes.Range(5).Visible = False
Worksheets(1).Shapes.Range(6).Visible = True
Range("A1") = Range("A1") + 1
Application.OnTime Now + TimeValue("00:00:01"), "mynzE"
End Sub
Sub mynzF()
If myUU = False Then Exit Sub
Application.OnTime Now + TimeValue("00:00:01"), "mynzE", , False
Range("A1") = ""
Worksheets(1).Shapes.Range(6).Visible = False
Worksheets(1).Shapes.Range(5).Visible = True
myUU = False
End Sub
Sub mynzG()
Set myDocument = Worksheets(1)
myDocument.Shapes.Range(Array(5, 6)).Visible = True
End Sub
代码截图:
代码的讲解:
1)Public myUU As Boolean 设置全局变量myUU为布尔型变量,这个默认值为false
2) myUU = True
Worksheets(1).Shapes.Range(6).Visible = True
Worksheets(1).Shapes.Range(5).Visible = False
点击这个按钮Shapes.Range(5)后,那么第6个按钮会出现,第5个按钮会隐藏。
3)Range("A1") = Range("A1") + 1
Application.OnTime Now + TimeValue("00:00:01"), "mynzE"
每隔1秒钟在单元格“A1”中累加1.
4)If myUU = False Then Exit Sub 如果点击第7个按钮,当myUU = False时,则退出。
5)Application.OnTime Now + TimeValue("00:00:01"), "mynzE", , False
Range("A1") = ""
取消mynzE的程序运行预设。
6)Worksheets(1).Shapes.Range(6).Visible = False
Worksheets(1).Shapes.Range(5).Visible = True
第6个按钮隐藏,第5个按钮显示
7)myDocument.Shapes.Range(Array(5, 6)).Visible = True
显示工作表中的5到6所有的按钮。
我们看下面的代码运行:
点击开始按钮mynzG:
点击关闭按钮mynzF:
恢复按钮点击mynzG:
总结:程序的预设运行是非常值得研究的一个课题,本专题深入地讲解了Application.OnTime
方法的利用,包括如何预设,如何取消预设,相信大家一定会有所收获,如果自己认为可以理解了Application.OnTime中各个参数的用法,不妨看看下面今日内容回向的问题。
今日内容回向:
1 如何理解Application.OnTime中各个参数的意义?
2 如何取消程序的预设?
我20多年的VBA实践经验,全部浓缩在下面的各个教程中: