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实践经验,全部浓缩在下面的各个教程中:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值