程序1和程序2是几乎完全相同的两个程序,用图4-6所示的方式将两个程序输入到不同的工作表对像中,然后分别在两张工体表中选中不同的单元格,看看程序运行的效果有什么不同?
程序1:
程序2:
参考答案
运行程序1,程序将陷入死循环,无法得到预想的结果。执行程序2后,能得到预期的结果。
设置EnableEvents属性为False后,当选中单元格后,Excel不会再自动运行程序,即禁用了该事件。
通过对比,你知道EnableEvents属性有什么作用吗?把自己的心得写下来。
4.2.4 WorksheetFunction属性
没有这样的函数,真遗憾
VBA里有许多内置函数可供使用,但在实际应用中,并不是所有的问题都能找到合适的函数来解决。
如想统计A1:B50单元格中数值大于1000的单元格有多少个,就没有现成的函数,需要编写Function或Sub过程来统计。
为什么不使用COUNTIF函数
因为VBA里没有COUNTIF函数。其实不只COUNTIF,SUMIF、TRANAPOSE、VLOOKUP等常用函数在VBA中也没有。
虽然VBA里没有这些函数,但并不意味着它们都不能在VBA中使用。在VBA里,可以使用Appplication对象的WorksheetFunction属性调用部分工作表函数。
这个问题,也可以使用工作表中的COUNTIF函数来完成。
注意:如果VBA里已经有了相同的函数,不能再引用工作表中的函数,否则会出错。如要使用Len函数计算“ABCDE”的长度,应该写成Len(“ABCDE”),而不能写成Application.WorksheetFunction.Len(“ABCDE”)。
4.2.5 给Excel梳妆打扮
Excel就像一个漂亮的姑娘,你可以随心所欲地打扮她。梳个漂亮的发型,画一画眉毛,换一件漂亮的衣服……小女孩的脸上有鼻子、眼睛、嘴巴等五官,Excel的脸上也有“五官”,如图4-8所示。
图4-8 Excel的界面
如果你不想看到她的某个“器官”,可以把它隐藏起来,如果你觉得她的单眼皮不好看,可以动手改造一下(参阅6.5节)。