ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 单元格对象的书写方式与代码效率

单元格对象的书写方式与代码效率

作者:绿色风 分类: 时间:2022-08-18 浏览:86
楼主
罗刚君
Range("a1")形式的引用慢于cells(1,1)形式的引用,cells(1,1)形式的引用慢于Range对象变量
尽管三者都是对象变量,但是用它们三者参与相同的运算时,效率上差异还是较大的。
下面请看看代码(请在A1单元格随意录入几个字符,然后测试以下代码):
  1. Sub 测试代码执行时间()
  2.     Dim tim1 As Date, tim2 As Date, item As Long,Length As Byte
  3.     tim1 = Timer
  4.     For item = 1 To 1000000
  5.     Length = Len(Range("A1"))
  6.     Next item
  7.     tim2 = Timer
  8.     MsgBox Format(tim2 - tim1, "程序执行时间为:0.000秒"),64, "时间统计"
  9. End Sub
  10. Sub 测试代码执行时间2()
  11.     Dim tim1 As Date, tim2 As Date, item As Long,Length As Byte
  12.     tim1 = Timer
  13.     For item = 1 To 1000000
  14.     Length = Len(Cells(1, 1))
  15.     Next item
  16.     tim2 = Timer
  17.     MsgBox Format(tim2 - tim1, "程序执行时间为:0.000秒"),64, "时间统计"
  18. End Sub
  19. Sub 测试代码执行时间3()
  20.     Dim tim1 As Date, tim2 As Date, item As Long,Length As Byte, rng As Range
  21.     tim1 = Timer
  22.    Set rng = Cells(1, 1)
  23.     For item = 1 To 1000000
  24.     Length = Len(rng)
  25.     Next item
  26.     tim2 = Timer
  27.     MsgBox Format(tim2 - tim1, "程序执行时间为:0.000秒"),64, "时间统计"
  28. End Sub


效率比较.gif  
2楼
水星钓鱼
感谢分享,学习了。
3楼
西索
好贴留名
4楼
罗刚君
  1. '引用多层对象去参与运算
  2. Sub 多层对象()
  3.     Dim tim1 As Date, tim2 As Date, item As Long, Length As Byte '声明变量
  4.     tim1 = Timer '将当前时间赋予变量tim1
  5.     For item = 1 To 1000000  '循环执行1000000次
  6.         Length = Len(ThisWorkbook.Worksheets(2).Range("A1")) '计算代码所在工作簿第二个工作表的A1单元格的字符数量
  7.     Next item
  8.     tim2 = Timer  '计算当前的时间
  9.     MsgBox Format(tim2 - tim1, "程序执行时间为:0.000秒") '根据两个时间的差值得到程序的执行时间
  10. End Sub
  11. '将多层对象赋值给变量,然后以变量去参与运算,效率是上一个过程的约6倍
  12. Sub 多层对象2()
  13.     Dim tim1 As Date, tim2 As Date, item As Long '声明变量
  14.     Dim Length As Byte, rng As Range '声明变量
  15.     tim1 = Timer '将当前时间赋予变量tim1
  16.     Set rng = ThisWorkbook.Worksheets(2).Range("A1") '将多层对象赋予变量Rng
  17.     For item = 1 To 1000000 '循环执行1000000次
  18.         Length = Len(rng)   '计算变量所代表的对象的字符数量
  19.     Next item
  20.     tim2 = Timer  '计算当前的时间
  21.     MsgBox Format(tim2 - tim1, "程序执行时间为:0.000秒") '根据两个时间的差值得到程序的执行时间
  22. End Sub

当引用的对象越复杂时,变量提升的效率也越多。
5楼
芐雨
好贴

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap