VBA代码编写技巧
方法:尝试使用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程序完成时,不要忘记将该值设置回:
申请。屏幕更新=真