练习小课堂

对比两个程序的执行过程,你发现它们之间的区别了吗?设置ScreenUpdating属性有什么作用?试着小结一下。

img019参考答案

区别在于是否将程序运行过程中的计算结果显示到屏幕上。

设置ScreenUpdating属性为False,将看不到程序的执行过程,可以加快程序的执行速度,让程序显得直观、专业。

4.2.2 DisplayAlerts属性

img062 烦人的删除工作表

这是一个删除工作表的小程序:

img278

但是,程序运行后并不顺畅,如图4-5所示。

img279

图4-5 删除工作表前的警告对话框

img062 取消显示警告对话框

如果想取消显示对话框,只需要对程序作简单的修改:

img280

修改完成后,再次运行程序,警告对话框彻底消失了。

img062 DisplayAlerts属性,详细的介绍

Application对象的DisplayAlerts属性决定在程序运行中是否显示警告信息,默认值为True,如果不想在程序运行时被提示和警告信息打扰,可在程序开始时将属性设为False。但如果在程序中修改了该属性为False,在程序结束前请记得将它设回True。

4.2.3 EnableEvents 属性

可以通过设置Application对象的EnableEvents属性来启用或禁用事件。

img062 什么是事件

img281

事件是能被Excel认识的一个操作动作(参阅5.1.2小节)。

Excel里的许多操作都会触发事件,如打开工作簿、关闭工作簿等。用户可以编写不同的代码来响应这些事件,当触发某个事件时,自动执行指定的代码。

img062 自动写入单元格地址" class="reference-link">img062 自动写入单元格地址

编写一个程序,当选中工作表中的单元格时,自动在单元格中写入该单元格的地址,如图4-6所示。

img282

图4-6 在工作表对象中输入程序

完成后返回该工作表区域,选中任意一个单元格,Excel会自动将该单元格的地址写入单元格中,如图4-7所示。

img283

图4-7 自动填写单元格地址

这个程序是Worksheet_SelectionChange事件的应用,当用户更改选中的单元格时,自动运行Sub与End Sub之间的代码。

img062 什么是禁用事件

禁用事件就是执行操作后不让事件发生。

如果禁用了事件,更改选中的单元格,Sub与End Sub之间的代码并不会运行。

在VBA里,可以设置Application对象的EnableEvents的属性为False来禁用事件。