大家好,本节介绍用于处理对象和集合的语句之一的with语句,内容相对比较简单,with语句的问题在上节时有引出。
With 语句
上节中涉及一个对象的执行多个操作时,如多条属性时,每条属性的设置都具体的写出对象的完整形式,如上节的单元格字体属性的例子:
在代码中如果是写入单元格字体完整形式,worksheets(1).range("b2").font会显著增加代码输入量,不仅容易引发重复输入导致的错误,对象的频繁出现会降低代码的执行效率。
而with....end with语句就可以对某个对象执行一系列操作,而不必重复指出该对象的名称。它的语法结构如下:
with <对象>
[语句代码]
end with
结构相对简单,下面我们就将上节字体属性代码用with语句来修改如下:
代码中间所有属性的对象worksheets(1).range("b2").font 单独列出来,然后另起一行。加上英文逗号和属性,如.name等,代码如下:
Sub test()
With Worksheets(1).Range("b2").Font
.Name = "微软雅黑"
.Size = 16
.ColorIndex = 5
.Bold = True
End With
End Sub
上节说过很多属性,不需要特别记忆,在出现遗忘时可以通过录制宏查看代码即可,而录制宏后得到的代码,通常都有with语句,如下图:
了解with语句,有助于查看录制宏的代码,同时在以后编写代码时,同样的情形下可以用于简化代码。
VBA 代码运行时间
上面提到with语句可以提高vba代码的执行效率,代码的执行效率是后期编写程序时需要注意的问题。
当程序需要对大量数据和对象进行操作时,excel程序通常运行变慢,甚者如同程序崩溃一样,这就涉及优化代码,后期介绍时会作说明总结。
下面简单说下在程序通过代码中,如何记录程序运行的时间。以一段繁琐的代码为例,新建10张工作表,并修改工作表中单元格字体,看代码运行时间。
原理很简单,即首先把当前时间赋值给变量,作为初始时间,在程序运行代码的最后,用当前时间减去初始时间得到的时间差,即是vba程序运行时间,代码如下:
Sub test()
Dim star As Double
star = Timer
[VBA程序代码]
MsgBox "程序耗时" & Format(Timer - star, "0.00") & "秒"
End Sub
前面介绍with语句的使用,减少代码中对象出现的频率就是优化代码运行效率的有效方式。
本节主要介绍with语句的使用,可以简化代码并提高程序的运行效率。然后提及如何记录程序运行时间,字后期学习中也会说明哪些方法可以提高代码运行效率。下节将介绍单元格对象的方法,祝大家学习快乐。