乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel打开很慢-Excel优化VBA代码高速生成长字符,使用&操作符执行速度非常慢

excel打开很慢-Excel优化VBA代码高速生成长字符,使用&操作符执行速度非常慢

作者:乔山办公网日期:

返回目录:excel表格制作

很多Excel VBA文章和图书都介绍过如何优化VBA代码,使代码运行得更快。一些使Excel VBA代码运行更快的技术和技巧,与大家分享。鉴于VBA与VB的关系,资料中绝大多数技巧对于VBA同样适用。其中的大多数代码都是亲自在VBA中测试过的,某些地方加了一点注解。


Mid$高速生成长字符


大家都知道, &操作符的执行速度是相当慢的,特别是处理长字符串时.当必须重复地在同一变量上附加字符时,有一个基于Mid$命令的技巧可以使用.基本思路就是:预留一个足够长的空间存放操作的结果.下面是应用这个技术的一个例子.


假设要建立一个字符串,它要附加从1开始的10000个整数:"1 2 3 4 5 6 7 ... 9999 10000".下面是最简单的实现代码:


  1. res = ""
  2. For i = 1 to 10000
  3. res = res & Str(i)
  4. Next

代码虽然简单,但问题也很明显:Res变量将被重分配10000次.下面的代码实现同样的目的,但效果明显好转:


  1. Dim res As String
  2. Dim i As Long
  3. Dim index As Long
  4. ‘预留足够长的缓冲空间
  5. res = Space(90000)
  6. ‘指针变量,指出在哪里插入字符串
  7. index = 1
  8. ‘循环开始
  9. For i = 1 to 10000
  10. substr = Str(i)
  11. length = Len(substr)
  12. ‘填充字符串的相应区间段数值
  13. Mid$(res, index, length) = substr
  14. ‘调整指针变量
  15. index = index + length
  16. Next
  17. ‘删除多余字符
  18. res = Left$(res, index - 1)

复制代码


测试表明:在一个333MHz的计算机上,前段代码执行时间为2.2秒,后者仅仅为0.08秒!代码虽然长了些,可是速度却提高了25倍之多.呵呵,由此看来:代码也不可貌相啊(看样子,代码并不一定短才好)


关于带有特定目的的VBA方法的更多的信息,您可参见VBA帮助系统相关主题。


结语


当然,代码优化可能不是绝对必要的,这依赖于您要做的工作……如果您正好编写了一个快速且简短的或者是一次性使用且与速度和/或简洁要求无关的代码,您就不需要优化代码。


但另一方面,如果您处理一个带有很多数据、工作簿、工作表等大的工程,再次检查您第一次编写好的代码,看看是否您的代码需要优化,而这样做总是值得的。


最终,您将养成编写代码的好习惯,将会使您的代码更简洁、运行更快速、并且容易为您自已和他人阅读和调试。同时,由于您的代码简洁,因而输入更快,工作效率更高。


相关阅读

关键词不能为空

ppt怎么做_excel表格制作_office365_word文档_365办公网