VBA编程With语句

2019-10-13 15:44:22 浏览数 (1)

大家好,本节介绍用于处理对象和集合的语句之一的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语句的使用,可以简化代码并提高程序的运行效率。然后提及如何记录程序运行时间,字后期学习中也会说明哪些方法可以提高代码运行效率。下节将介绍单元格对象的方法,祝大家学习快乐。


vba

0 人点赞