如题所述
对象,包括所有VBA中使用的对象。你的每次调用都会耗费比调用数字多N倍的资源。下面看2段代码,要完成的任务都是向A1:A10000中填充序号。
代码1:
Sub 运算1()t = Timer
For x = 1 To 10000
Range("a" & x) = x
Next x
MsgBox Timer - t
End Sub
分析:上面这段代码,在循环中调用Range对象,共调用了10000次。运算时间:0.98秒
Sub 运算2()Dim arr(1 To 10000, 1 To 1)
t = Timer
For x = 1 To 10000
arr(x, 1) = x
Next x
Range("a1:a10000") = arr
MsgBox Timer - t
End Sub
分析:本段代码中,先声明一个10000行1列数组,然后在循环中不是直接输入到Range对象中,而是先存入arr数组中。最后一次性的把arr数组中的数字输入到A1:A10000区域中。最终运行时间是0.062秒,比代码1快了十几倍。
由上述2段代码可以看到,大循环中调用对象对速度的影响非常的大,在写代码时尽量的规避把VBA对象放在循环中调用。
温馨提示:答案为网友推荐,仅供参考