VBA 中读取单元格时 Cells属性、Range对象、Array转存三种方法的速度

概述

Cells属性Range对象Array转存这三种调用方法,都可以都可以读取单元格中的内容。既然这它们功能相同,那么速度就成为了选择的关键。

测试速度的代码

' 先用 Fill 填充内容,然后用 TestSpeetCells、TestSpeetRange、TestSpeetArray 测试速度。

Sub Fill()

Range("A99982").NumberFormatLocal = "@"
For i = 1 To 100000 Step 1
    Cells(i, 1) = CStr(i)
Next i

End Sub

Sub TestSpeetCells() '测试 Cells属性 的速度

Dim i As Long
Dim a As String

For i = 1 To 100000 Step 1
    a = Sheets(5).Cells(i, 1)
Next i

End Sub

Sub TestSpeetRange() '测试 Range对象 的速度

Dim i As Long
Dim a As String

Dim c As Range
Set c = Sheets(5).Range("A1:A100000")
For i = 1 To 100000 Step 1
    a = c(i, 1)
Next i

End Sub

Sub TestSpeetArray() '测试 Array转存 的速度

Dim i As Long
Dim a As String

Dim c As Variant
c = Sheets(5).Range("A1:A100000")
For i = 1 To 100000 Step 1
    a = c(i, 1)
Next i

End Sub

测试结果

测试结果的时间单位是毫秒。

第几次测试 Cells属性 Range对象 Array转存
1 541.9597 233.8098 21.8212
2 537.5843 234.8304 21.5427
3 540.0026 236.7964 21.7300
4 544.2964 234.8777 21.6883
5 542.2027 234.5648 21.8825
6 545.6543 232.6115 21.7464
7 543.3828 235.7805 21.6648
8 541.7655 236.0788 21.7365
9 541.7720 233.1813 21.7217
10 541.8308 232.8468 21.7146

结论

使用Cells属性Range对象Array转存要慢。

所以应该优先使用Array转存

猜你喜欢

转载自www.cnblogs.com/dreamofjay/p/12509816.html
今日推荐