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轉存


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM