与Excel 2007相比,在Excel 365中使用VBA取消保护/保护工作表的速度要慢得多。是否有人对此有丝毫想法?并且有什么办法可以解决这个问题而不仅仅是忽略保护功能?
为确保该问题仅是由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)
`
这将得出以下平均值:
答案 0 :(得分:0)
经过更多研究并在其他论坛上提问,我找到了解决方案。
通过在保护语句中添加UserInterfaceOnly:=True
参数,可以仅为用户提供保护,从而为VBA提供保护。因此,仅需要保护一次(即可以省略其余代码中的(un)protect语句)。
当然,这还不能解释为什么(un)protect语句需要这么长时间。若要尝试解决此问题的答案,我将直接与Microsoft联系。