分享

Application对象

 L罗乐 2017-03-15

本节 我们将介绍Application对象最常见的用法

我们在了解了三大件range,worksheet和workbook对象之后,已经能够自己写一些小的需求了。但实际Excel VBA中还有别的对象,比如今天我们要介绍的Application对象。

在这之前,先放一张A哥从网上找到的Excel对象模型,大家可以结合之前学习的对象三大件来体会一下。

没错,Application对象其实就是指代的是整个Excel应用, 处在Excel对象模型的最顶层。通过对application对象我们可以实现更多的顶层的需求,例如自定义状态栏等等。这个我们后面会讲到。

事实上,Application 在实虽然可以千变万化,但际操作中,如果仅仅是应付日常的自动化工作,掌握以下几个就可以了。

ScreenUpdating

不知道大家注意到没,在有些程序的运行过程中,我们经常会看到窗口在不停的跳动,最开始看起来万分酷炫。

这实际上,就是在运行过程中,每执行一步,excel窗口就刷新一次,把最新的窗口显示出来。从运行效率上来讲,这样运行程序效率是不高的。

怎么样来调整呢?我们需要设置用到Application.ScreenUpdating为False即可。但一定要注意,在程序运行完之后要把Application.ScreenUpdating的值再改为True,有始有终嘛。
让我们以一小段代码来体会一下ScreenUpdating的关闭与否能影响多少运行速度。
下面这段代码用于在工作簿的前两个工作表之间来回切换1000次,使用Timer来记录开始和结束的时间。

Sub test_application()    'Application.ScreenUpdating = False    start_time = Timer    '用Timer来记录当前开始时间    For i = 1 To 1000        Worksheets(i Mod 2 1).Select    Next    end_time = Timer    '记录结束时间    'Application.ScreenUpdating = True    MsgBox (end_time - start_time) & ' s' End Sub

我们如果不设置ScreenUpdating属性,F5运行看看,使用了3.55秒。

如果关闭屏幕刷新,我们同样运行,最终只使用了1.18秒。

看看,是不是差很多?
所以,A哥建议大家在运行程序时,尤其在数据流比较复杂的程序里,尽量关闭屏幕刷新。但要记得最后要重新设计开启哦。

DisplayAlerts

在程序运行过程中,有时由于Excel本身设置的原因,会弹出对话框,从而中断程序的运行。比方说,如果我们要保存当前工作簿,可以很简单的写一句

thisworkbook.save

然后运行,我们正准备心满意足的准备进行下一步时,天边突然飘来一个窗口

这是什么鬼?

事实上,这是Excel自带的一种可谓保护和提醒机制,就像是我们要关闭一个文档,系统会提醒我们是否要保存修改一样。但在有的时候,我们是很确定要保存修改,所以我们不想看到这个对话框。怎么办?
只需要设置Application.DisplayAlerts = False即可。系统会自动跳过对话框,并且使用对话框的默认选择继续进行。例如:

Sub test_application2()    Application.DisplayAlerts = False    ThisWorkbook.Save    Application.DisplayAlerts = True End Sub

在我们上次弹出的对话框里,系统的默认选择是Ok,所以系统会按照OK继续执行程序,而不弹出对话框。

在程序运行的结尾,作为一个良好的习惯,我们还是要把显示提醒重新设置为True,但忘了设置怎么办?别担心,微软的程序员们早就想好了。他们会在程序运行之后自动把Application.DisplayAlerts设置为True,这样子妈妈就再也不担心我的Excel不跳出提醒了!

除了上面两个之外,Application对象的方法和事件还有很多,在这里就不一一介绍了,大家可以自行F1来使用微软的帮助来查看更多功能。

总结

  • Application对象
  • 设置Application.ScreenUpdating
  • 设置Application.DisplayAlerts

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多