作者:绿色风
分类:
时间:2022-08-18
浏览:135
楼主 罗刚君 |
Range("a1")形式的引用慢于cells(1,1)形式的引用,cells(1,1)形式的引用慢于Range对象变量 尽管三者都是对象变量,但是用它们三者参与相同的运算时,效率上差异还是较大的。 下面请看看代码(请在A1单元格随意录入几个字符,然后测试以下代码):
- Sub 测试代码执行时间()
- Dim tim1 As Date, tim2 As Date, item As Long,Length As Byte
- tim1 = Timer
- For item = 1 To 1000000
- Length = Len(Range("A1"))
- Next item
- tim2 = Timer
- MsgBox Format(tim2 - tim1, "程序执行时间为:0.000秒"),64, "时间统计"
- End Sub
- Sub 测试代码执行时间2()
- Dim tim1 As Date, tim2 As Date, item As Long,Length As Byte
- tim1 = Timer
- For item = 1 To 1000000
- Length = Len(Cells(1, 1))
- Next item
- tim2 = Timer
- MsgBox Format(tim2 - tim1, "程序执行时间为:0.000秒"),64, "时间统计"
- End Sub
- Sub 测试代码执行时间3()
- Dim tim1 As Date, tim2 As Date, item As Long,Length As Byte, rng As Range
- tim1 = Timer
- Set rng = Cells(1, 1)
- For item = 1 To 1000000
- Length = Len(rng)
- Next item
- tim2 = Timer
- MsgBox Format(tim2 - tim1, "程序执行时间为:0.000秒"),64, "时间统计"
- End Sub
效率比较.gif |
2楼 水星钓鱼 |
感谢分享,学习了。 |
3楼 西索 |
好贴留名 |
4楼 罗刚君 |
- '引用多层对象去参与运算
- Sub 多层对象()
- Dim tim1 As Date, tim2 As Date, item As Long, Length As Byte '声明变量
- tim1 = Timer '将当前时间赋予变量tim1
- For item = 1 To 1000000 '循环执行1000000次
- Length = Len(ThisWorkbook.Worksheets(2).Range("A1")) '计算代码所在工作簿第二个工作表的A1单元格的字符数量
- Next item
- tim2 = Timer '计算当前的时间
- MsgBox Format(tim2 - tim1, "程序执行时间为:0.000秒") '根据两个时间的差值得到程序的执行时间
- End Sub
- '将多层对象赋值给变量,然后以变量去参与运算,效率是上一个过程的约6倍
- Sub 多层对象2()
- Dim tim1 As Date, tim2 As Date, item As Long '声明变量
- Dim Length As Byte, rng As Range '声明变量
- tim1 = Timer '将当前时间赋予变量tim1
- Set rng = ThisWorkbook.Worksheets(2).Range("A1") '将多层对象赋予变量Rng
- For item = 1 To 1000000 '循环执行1000000次
- Length = Len(rng) '计算变量所代表的对象的字符数量
- Next item
- tim2 = Timer '计算当前的时间
- MsgBox Format(tim2 - tim1, "程序执行时间为:0.000秒") '根据两个时间的差值得到程序的执行时间
- End Sub
当引用的对象越复杂时,变量提升的效率也越多。 |
5楼 芐雨 |
好贴 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一