一、减少对象的调用
二、减少计算次数
三、禁止闪屏
四、增加变量的声明类型
五、减少工作表函数的使用
六、减少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填充方式。
标签:Dim,VBA,Sub,47,单元格,提速,Timer,循环,减少 From: https://www.cnblogs.com/bravesunforever/p/17013933.html