VBA中Sheets(String)和Sheets(Long)的速度

概述

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)
1609.5660748.9382
2611.6371748.7220
3611.5759750.5656
4611.3749749.9504
5609.5672747.9031
6611.0058750.5208
7610.2335746.6654
8611.2921750.4843
9609.6433745.1653
10612.6212748.4685

结论

使用Sheets(String)Sheets(Long)要慢。

所以应该优先使用Sheets(Long)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值