【发布时间】:2015-11-16 03:47:28
【问题描述】:
由于在 workbook_open 事件中运行了许多宏,我有一个工作簿需要 6 秒以上才能打开。
我想加快速度,所以我使用了一个计时器来测试代码在启动时的不同部分与在工作簿打开时运行的不同部分。除了这部分之外,所有部分在这两种情况下都需要相同的时间来运行:
Dim ATime As Double
Dim BTime As Double
ATime = timer
Dim b As Long
For b = 5 To 268
If Sheets("Orders").Range("F" & b) = "Locked" Then
Sheets("Orders").Range("C" & b).Locked = True
Sheets("Orders").Range("D" & b).Locked = True
Sheets("Orders").Range("E" & b).Locked = True
End If
Next
BTime = timer
MsgBox "1. " & Format(BTime - ATime, "0.00 \s\ec")
在 workbook_open 运行时:2.78 秒。在工作簿中手动运行时:0.01 秒。
这里有什么问题?
【问题讨论】:
-
尝试使用
With Sheets("Orders")并将Range()更改为Cells()...这样会节省很多时间...还要更改默认锁定?最好像If Not .Cells(b, 3).Locked Then .Cells(b, 3).Locked = True一样检查...所有这些都可能会加快进程本身...但是,不幸的是我不知道为什么时间上有这么大的差距:/ -
你能改变宏运行的顺序吗?如果这样做,这是否会更改此宏运行所需的时间?
标签: vba excel micro-optimization