Excel 2013 VBA wsheet.protect UserInterfaceOnly:= True

时间:2016-05-24 16:03:41

标签: excel vba

我在启用宏的模板上运行了一次名为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

1 个答案:

答案 0 :(得分:0)

请参阅:http://www.cpearson.com/excel/Protection.aspx

  

关闭时不保存UserInterfaceOnly设置   工作簿,因此您需要在打开工作簿时进行设置。最好的   这样做的地方是在Workbook_Open事件过程中。