手机版

VBA代码编写技巧

时间:2021-12-07 来源:互联网 编辑:宝哥软件园 浏览:

方法:尝试使用VBA的原始属性、方法和工作表函数。

由于Excel对象有100多个,对象的属性、方法、事件众多,初学者可能并不都知道,导致程序员经常编写与Excel对象的属性、方法功能相同的VBA代码段,这些代码段的运行效率与用Excel对象的属性、方法完成任务的速度明显相差很大。例如,使用Range的CurrentRegion属性返回Range对象,该对象代表当前区域。(当前区域是指由空白行和空白列的任意组合界定的区域)。同样功能的VBA码需要几十行。因此,在编程之前,您应该尽可能多地了解Excel对象的属性和方法。

充分利用工作表功能是提高程序运行速度的极其有效的方法。例如,对于平均工资:

对于工作表(1)中的每个c。范围(A1:A1000)

总值=总值

然后

平均值=总值/工作表(1)。范围(A1:A1000)行数

下面的代码程序比上面的例子快得多:

平均值=应用。工作函数。平均值(工作表(1)。范围(A1:A1000)

其他函数,如count、counta、countif、match、lookup等。可以用同样的功能替换VBA程序代码并提高程序的运行速度。

方法2:尽量减少对象引用的使用,尤其是在循环中。

每个Excel对象的属性和方法的调用都需要通过OLE接口进行一次或多次调用。这些OLE调用都需要时间。减少对象引用的使用可以加快VBA代码的运行。

1.例如,使用With语句。

工作簿(1)。工作表(1)。范围(A1:A1000)

工作簿(1)。工作表(1)。范围(A1:A1000).

下面的语句比上面的语句快。

使用工作簿(1)。工作表(1)。范围(A1:A1000)。字体

名称=“支付”。FontStyle=“粗体”.

以…结尾

2.使用对象变量

如果您发现一个对象引用被多次使用,您可以将该对象设置为一个带有Set的对象变量,以减少对该对象的访问。例如:

工作簿(1)。工作表(1)。范围(A1)。值=100

工作簿(1)。工作表(1)。范围(A2)。值=200

下面的代码比上面的代码快:

设置我的工作表=工作簿(1)。工作表(1)

我的报纸。范围(A1)。值=100

我的报纸。范围(A2)。值=200

3.尽量减少循环中对象的访问。

对于k=1至1000

纸张(纸张1)。挑选

单元格(k,1)。值=单元格(1,1)。价值

下一k

下面的代码比上面的代码快:

设置值=单元格(1,1)。价值

纸张(纸张1)。挑选

对于k=1至1000

单元格(k,1)。值=值

下一k

方法:减少对象的激活和选择。

如果你通过录制宏来学习VBA,你的VBA程序必须充满激活和对象选择,例如

书籍(XXX)。激活,工作表(XXX)。选择,范围(XXX)。选择等。但实际上这些操作在大多数情况下是不必要的。例如

纸张(纸张3)。挑选

范围(A1)。值=100

范围(A2)。值=200

可以更改为:

带表(表3)。范围(A1)。值=100。范围(A2)。值=200

以…结尾

方法4:关闭屏幕更新。

如果你的VBA程序前三项比较差,关闭屏幕更新是提高VBA程序运行速度最有效的方法,将运行时间缩短2/3左右。如何关闭屏幕更新:

申请。屏幕更新=假

当VBA程序完成时,不要忘记将该值设置回:

申请。屏幕更新=真

版权声明:VBA代码编写技巧是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。