vba 执行时会卡顿,求优化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vba 执行时会卡顿,求优化相关的知识,希望对你有一定的参考价值。
Sub 送货单()
On Error Resume Next
Dim tm
tm = Now()
Application.ScreenUpdating = False
Range("e6:e71,j6:j71").ClearContents
Dim i As Integer '匹配单价
Dim i2 As Integer '匹配单位
For i = 6 To [b71].End(xlUp).Row
Cells(i, "j") = WorksheetFunction.VLookup(Cells(i, "b"), Sheets("单位").Range("c:d"), 2, 0)
For i2 = 6 To [b71].End(xlUp).Row
Cells(i2, "e") = WorksheetFunction.VLookup(Cells(i2, "b"), Sheets("单位").Range("a:b"), 2, 0)
Next
Next
Application.ScreenUpdating = True
MsgBox "耗时:" & Format(Now() - tm, "hh:mm:ss")
End Sub
在 VBA 里用公式 ,还是Vlookup,不伦不类的
看不懂你这个循环 ,不是只要 2次 * 65 次就够了么
你为啥要 用 65*65 次,这不是 自己找慢么
For i = 6 To [b71].End(xlUp).Row
Cells(i, "j") = WorksheetFunction.VLookup(Cells(i, "b"), Sheets("单位").Range("c:d"), 2, 0)
For i2 = 6 To [b71].End(xlUp).Row
Cells(i2, "e") = WorksheetFunction.VLookup(Cells(i2, "b"), Sheets("单位").Range("a:b"), 2, 0)
Next
Next
========改成:
For i = 6 To [b71].End(xlUp).Row
Cells(i, "j") = WorksheetFunction.VLookup(Cells(i, "b"), Sheets("单位").Range("c:d"), 2, 0)
next
For i2 = 6 To [b71].End(xlUp).Row
Cells(i2, "e") = WorksheetFunction.VLookup(Cells(i2, "b"), Sheets("单位").Range("a:b"), 2, 0)
Next追问
谢谢了!
你一眼就看出了症结所在,
因为我是半吊子,所有的东西都是网上找的,所以学得也不伦不类。
另外,想请教大神,空行会影响VBA的运行速度吗?
求指教
追答要有文件的,否则我不能运行
追问优化起来困难吗?因为只是一个查找返回值的过程,而我是菜鸟一个
追答还可以
Android 性能优化--卡顿优化
卡顿优化
- CPU Profiler
- Systrace
- StrictMode
卡顿问题难的排查是比较难的,一方面因为卡顿问题产生的原因错综复杂,比如:代码、内存、绘制、IO操作等,另一方面,有的场景下的卡顿问题,可能难易复现。
工具选择
CPU Profiler
图形的形式展示执行时间,调用栈等
信息全面,包含所有线程
缺点:运行时开销严重,整体会变慢,可能会带偏我们优化的方向。
使用:
Debug.startMethodTracing("")
Debug.stopMethodTracing();
生成文件在sd卡
以上是关于vba 执行时会卡顿,求优化的主要内容,如果未能解决你的问题,请参考以下文章