我有一个在共享工作簿上运行的宏。 它将未共享工作簿复制/粘贴到共享工作簿中,关闭未共享工作簿,然后执行一系列查找。我发现在共享时,更新在执行未共享工作簿的打开/复制/粘贴/关闭时会挂起一点。有什么办法可以加快速度吗?
我已经设置了显示更新=假和计算=手动,这确实有助于查找,但它没有解决打开/复制/粘贴/关闭操作的延迟。有什么建议吗?
我知道共享工作簿不是最好的,但我的用户热衷于它......
do: Application.ScreenUpdating = false
我发现这对我的工作有很大帮助,我相信这与displayupdates不同。此外,请确保.activate
尽可能少地发生。每个单元格或工作表激活都是另一个通常不需要发生的处理指令。相反,如果可能,请使用offset(rows, Columns)
,或者查看是否可以引用工作表和范围,例如 Sheets(1).Range("Cell")
。检查编码不佳的/循环。如果可能,将多个if
替换为 elseif
的。
编辑
我从另一个网站得到这个 -
If ActiveWorkbook.MultiUserEditing Then
ActiveWorkbook.ExclusiveAccess
End If
我还没有测试过它,但也许您可以在复制/粘贴之前对其进行调整以取消共享工作簿?
如果您得出的结论是正确的,即打开共享工作簿时open/copy/paste/close
处理时间呈指数级增加,但除此之外只是略有增加,那么我认为提高性能的最佳方法是将所有未共享工作簿copy/paste
到另一个将用作缓冲区的非共享工作簿中。然后使用您的代码打开共享工作簿,并将缓冲区中的代码copy/paste
到所述共享工作簿中。
如果挂断发生在open/close
而不是copy/paste
中,这将有所帮助 - 我怀疑情况确实如此。