VBA 47 程序优化与提速的方法

一、减少对象的调用

二、减少计算次数

三、禁止闪屏

四、增加变量的声明类型

五、减少工作表函数的使用

六、减少VBA函数的使用

七、用静态数组替换动态

八、填充前先清空

九、批量替代个体

十、减少循环次数

十一、巧妙填充公式

 

 

一、减少对象的调用

调用对象是非常非常耗费资源的,所以一定要尽可能的少调用对象。包括:工作簿,工作表,单元格以及外引用对象。

下面两个程序的运行结果是一样的,但是在循环外的速度比循环中的速度快很多倍。

Sub 在循环中调用单元格()

Dim x As Integer
Dim k, t

t = Timer
For x = 1 To 20000
    k = [a1]
Next x

Debug.Print Timer - t


End Sub

 

Sub 在循环外调用单元格()

Dim x As Long, k, m
Dim t

t = Timer
m = [a1]
For x = 1 To 2000000
    k = m
Next x

Debug.Print Timer - t

End Sub

 

二、减少计算次数

程序的运算速度和计算次数有很大的关系,所以要尽可能的减少计算的次数。

能在循环外计算出结果的,就不要在循环内计算。

Sub 在循环中计算()
Dim a, b, c, x, t, k
t = Timer
a = 100
b = 2
c = 3

For x = 1 To 1000000
    k = a ^ b + c
Next x

Debug.Print Timer - t

End Sub

 

Sub 在循环外计算()
Dim a, b, c, x, t, k, m
t = Timer
a = 100
b = 2
c = 3

m = a ^ b + c
For x = 1 To 1000000
    k = m
Next x

Debug.Print Timer - t

End Sub

 

三、禁止闪屏

属性Application.ScreenUpdating = False时,可以禁止程序运行过程中的屏幕闪动,进而提高运行速度。

注意:只有对会引起闪屏操作的代码才有效,否则可能还会拖慢程序的速度。

什么情况下会引起闪屏?  操作单元格、工作表、工作簿会引起闪屏。

Application.ScreenUpdating = False

 

四、增加变量的声明类型

数组最需要声明类型,arr(1 to 6000, 1 to 3 ) as string

 

五、减少工作表函数的使用

调用工作表函数可以让代码更简洁,但速度却不理想。减少工作表函数的使用也是提升程序速度的方法之一。

下面两个都是工作表函数:

a = Application.WorksheetFunction.CountIf()
b = Application.WorksheetFunction.Index()

 

六、减少VBA函数的使用

七、用静态数组替换动态

八、填充前先清空

例如,填充单元格前先把单元格原先的内容给清空。

九、批量替代个体

十、减少循环次数

十一、巧妙填充公式

如果要输入公式的单元格是连续的,可以先在第一个单元格输入公式,其他单元格采用Filldown填充方式。

 

posted @ 2022-12-30 02:03  limalove  阅读(599)  评论(0)    收藏  举报