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