[英]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)
`
这产生以下平均值:
经过更多研究并在其他论坛上询问,我找到了解决方案。 通过在保护语句中添加UserInterfaceOnly:=True
参数,可以只保护用户,而不保护 VBA。 因此,只需要保护一次(即可以省略其余代码中的(un)protect 语句)。
当然,这还不能解释为什么 (un)protect 语句需要这么长时间。 为了尝试找到这个问题的答案,我将直接与 Microsoft 联系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.