在受保护的工作簿VBA中的其他工作表上隐藏行

时间:2019-04-29 20:18:34

标签: excel vba

我有一本包含多张纸的工作簿。其中之一是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

有人对如何避免此错误有任何建议吗?

1 个答案:

答案 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