我有一本包含多张纸的工作簿。其中之一是Sheet2上的一种目录,带有一堆ActiveX复选框。如果用户选择其中一个复选框,则会将该部分隐藏在另一张纸上。
我遇到的问题是,这需要成为受保护的工作簿。
当我单击一个复选框时,出现以下错误: “您要更改的单元格或图表位于受保护的工作表上。要进行更改,请在“审阅”选项卡中单击“取消保护工作表”。
这是我用来保护工作簿的代码:
Private Sub Workbook_Open()
Dim wSheetName As Worksheet
For Each wSheetName In Worksheets
wSheetName.Protect Password:="pass", UserInterfaceOnly:=True
Next wSheetName
End Sub
以及该复选框的代码:
Private Sub CheckBox1_Click()
Application.ScreenUpdating = False
If CheckBox1.Value = True Then
Sheet1.Rows("4:9").EntireRow.Hidden = True
Else:
Sheet1.Rows("4:9").EntireRow.Hidden = False
End If
Application.ScreenUpdating = True
End Sub
有人对如何避免此错误有任何建议吗?
答案 0 :(得分:1)
我在Sub上添加了ThisWorkbook
限定词。
更改:
Private Sub Workbook_Open()
Dim wSheetName As Worksheet
For Each wSheetName In Worksheets
wSheetName.Protect Password:="pass", UserInterfaceOnly:=True
Next wSheetName
End Sub
收件人:
Private Sub Workbook_Open()
Dim wSheetName As Worksheet
For Each wSheetName In ThisWorkbook.Worksheets
wSheetName.Protect Password:="pass", UserInterfaceOnly:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True
Next wSheetName
End Sub