繁体   English   中英

Excel 365 vba -(取消)保护工作表会大大减慢宏的速度

[英]Excel 365 vba - (un)protect sheet slows down macro a lot

与 Excel 2007 相比,使用 VBA 取消保护/保护工作表在 Excel 365 中要慢得多。有没有人知道为什么会这样? 有什么办法可以在不忽略保护功能的情况下解决这个问题?

为确保问题由 unprotect/protect 语句引起,我使用包含具有以下代码的单个模块的空白工作簿进行了测试:

Dim secondsElapsed As Double

startTime = Timer
Sheets("test").Unprotect ("****")
ThisWorkbook.Sheets("Timers").Cells(1, 1) = Round(Timer - startTime, 2)

startTime = Timer
Sheets("test").Protect Password:="****", DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
ThisWorkbook.Sheets("Timers").Cells(2, 1) = Round(Timer - startTime, 2)

`

这产生以下平均值:

  • Excel 2007
    • 取消保护:0.02 秒
    • 保护:0.01秒
  • Excel 365
    • 取消保护:0.52 秒
    • 保护:0.47 秒

经过更多研究并在其他论坛上询问,我找到了解决方案。 通过在保护语句中添加UserInterfaceOnly:=True参数,可以只保护用户,而不保护 VBA。 因此,只需要保护一次(即可以省略其余代码中的(un)protect 语句)。

当然,这还不能解释为什么 (un)protect 语句需要这么长时间。 为了尝试找到这个问题的答案,我将直接与 Microsoft 联系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM