概述
Sheets(String)
和Sheets(Long)
這兩種調用方法,都可以從Sheets
集合中返回一個工作表。既然這兩個功能相同,那麼速度就成爲了選擇的關鍵。
測試速度的代碼
Private Declare Function QueryPerformanceCounter Lib "KERNEL32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "KERNEL32" (lpFrequency As Currency) As Long
Private m_Frequency As Currency
Private m_Start As Currency
Private m_Now As Currency
Private m_Available As Boolean
Sub TestSpeet()
m_Available = (QueryPerformanceFrequency(m_Frequency) <> 0)
If Not m_Available Then
Debug.Print "Performance Counter not available"
End If
Dim i As Long
Dim a As String
Cells.NumberFormatLocal = "@"
For i = 1 To 100000 Step 1
Cells(i, 1) = CStr(i)
Next i
QueryPerformanceCounter m_Start
For i = 1 To 100000 Step 1
' 下面兩句中選一句執行
a = Sheets(1).Cells(i, 1) ' Sheets(Long)
a = Sheets("Sheet1").Cells(i, 1) ' Sheets(String)
Next i
QueryPerformanceCounter m_Now
Elapsed = 1000 * (m_Now - m_Start) / m_Frequency
Debug.Print Format(Elapsed, "#.0000")
End Sub
測試結果
測試結果的時間單位是毫秒。
第幾次測試 | Sheets(Long) |
Sheets(String) |
---|---|---|
1 | 609.5660 | 748.9382 |
2 | 611.6371 | 748.7220 |
3 | 611.5759 | 750.5656 |
4 | 611.3749 | 749.9504 |
5 | 609.5672 | 747.9031 |
6 | 611.0058 | 750.5208 |
7 | 610.2335 | 746.6654 |
8 | 611.2921 | 750.4843 |
9 | 609.6433 | 745.1653 |
10 | 612.6212 | 748.4685 |
結論
使用Sheets(String)
比Sheets(Long)
要慢。
所以應該優先使用Sheets(Long)
。