乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > Excel VBA优化在Excel和代码之间转换数据的次数,提高执行效率-excel打开很慢

Excel VBA优化在Excel和代码之间转换数据的次数,提高执行效率-excel打开很慢

作者:乔山办公网日期:

返回目录:excel表格制作

Excel VBA优化在Excel和代码之间转换数据的次数,提高执行效率

很多Excel VBA文章和图书都介绍过如何优化VBA代码,使代码运行得更快。一些使Excel VBA代码运行更快的技术和技巧,与大家分享。对于应用程序属性,在代码运行时关闭除必需属性以外的其它所有属性

本技巧用于优化在Excel和代码之间转换数据的次数。使用数组变量存储所需要的值并执行取值或赋值操作,而不是一次遍历单个单元格并获取或设置单个值。

例如,下面的代码在单元格区域A1:C10000中放置随机数。

代码段一:运行速度较慢的代码

Sub testSlow()

Dim DataRange As Range

Dim Irow As Long

Dim Icol As Integer

Dim MyVar As Double

Set DataRange = Range("A1:C10000")

For Irow = 1 To 10000

For Icol = 1 To 3

MyVar = DataRange(Irow, Icol) '从Excel单元格中读取值30K次

If MyVar > 0 Then

MyVar = MyVar * MyVar ' 改变值

DataRange(Irow, Icol) = MyVar '将值写入Excel单元格中30000次

End If

Next Icol

Next Irow

End Sub

代码段二:运行速度更快的代码

Sub testFast()

Dim DataRange As Variant

Dim Irow As Long

Dim Icol As Integer

Dim MyVar As Double

DataRange = Range("A1:C10000").Value '一次从Excel单元格中读取所有的值,将其放入数组

For Irow = 1 To 10000

For Icol = 1 To 3

MyVar = DataRange(Irow, Icol)

If MyVar > 0 Then

MyVar = MyVar * MyVar ' 改变数组中的值

DataRange(Irow, Icol) = MyVar

End If

Next Icol

Next Irow

Range("A1:C10000").Value = DataRange '一次将所有结果写回单元格

End Sub

关于带有特定目的的VBA方法的更多的信息,您可参见VBA帮助系统相关主题。

结语

当然,代码优化可能不是绝对必要的,这依赖于您要做的工作……如果您正好编写了一个快速且简短的或者是一次性使用且与速度和/或简洁要求无关的代码,您就不需要优化代码。

但另一方面,如果您处理一个带有很多数据、工作簿、工作表等大的工程,再次检查您第一次编写好的代码,看看是否您的代码需要优化,而这样做总是值得的。

最终,您将养成编写代码的好习惯,将会使您的代码更简洁、运行更快速、并且容易为您自已和他人阅读和调试。同时,由于您的代码简洁,因而输入更快,工作效率更高。

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网