使用不带范围的数组
Office 博客 - Excel VBA 性能编码最佳实践
通常,通过尽可能避免使用 Range
来实现最佳性能。在这个例子中,我们将整个 Range
对象读入一个数组,对数组中的每个数字进行平方,然后将数组返回到 Range
。这只能访问 Range
两次,而一个循环可以访问它 20 次以进行读/写。
Option Explicit
Sub WorkWithArrayExample()
Dim DataRange As Variant
Dim Irow As Long
Dim Icol As Integer
DataRange = ActiveSheet.Range("A1:A10").Value ' read all the values at once from the Excel grid, put into an array
For Irow = LBound(DataRange,1) To UBound(DataRange, 1) ' Get the number of rows.
For Icol = LBound(DataRange,2) To UBound(DataRange, 2) ' Get the number of columns.
DataRange(Irow, Icol) = DataRange(Irow, Icol) * DataRange(Irow, Icol) ' cell.value^2
Next Icol
Next Irow
ActiveSheet.Range("A1:A10").Value = DataRange ' writes all the results back to the range at once
End Sub
有关定时示例的更多提示和信息可以在 Charles Williams 的编写高效 VBA UDF(第 1 部分) 和该系列中的其他文章中找到 。