我在启用宏的模板上运行了一次名为SetProtection()
的简单子。该工作簿有9个选项卡。我运行代码以便UserInterfaceOnly:=True
。模板打开时工作正常。我保存并关闭模板。从Windows文件夹视图中,我双击模板文件,以便excel打开一个新的工作簿。新工作簿忘记了UserInterfaceOnly:=True
设置。当vba尝试更改另一个被锁定的单元格的值时,当单元格的值发生更改时出现错误。
让我说我编辑模板文件并且savAs是一个启用宏的工作簿。如果我编辑工作簿,UserInterfaceOnly:=True
设置将继续有效。 VBA可以更改锁定的单元格。
不应该通过Excel模板文件传递UserInterfaceOnly:=True
吗?
Sub SetProtection()
Dim wSheet As Worksheet
Dim Pwd As String
Pwd = InputBox("Enter your password to protect all worksheets", "Password Input")
For Each wSheet In Worksheets
wSheet.Protect Password:=Pwd, UserInterfaceOnly:=True
Next wSheet
End Sub
答案 0 :(得分:0)
请参阅:http://www.cpearson.com/excel/Protection.aspx
关闭时不保存UserInterfaceOnly设置 工作簿,因此您需要在打开工作簿时进行设置。最好的 这样做的地方是在Workbook_Open事件过程中。