如何保护/取消保护宏切换

如何保护/取消保护宏切换

我创建了一个非常简单的宏来切换隐藏和取消隐藏行。我对 VBA 还很陌生,所以对于这个基本问题深表歉意。切换的代码是:

Private Sub CommandButton1_Click()
    Rows("57:73").Hidden = Not Rows("57:73").Hidden
End Sub

当保护工作表时,宏显然不起作用,所以我尝试使用下面的代码在函数内锁定/解锁工作表,但出现 424 错误。

Private Sub CommandButton1_Click()
    ThisWorkbook.Worksheets(Final).Unprotect (1234)
    Rows("57:73").Hidden = Not Rows("57:73").Hidden
    ThisWorkbook.Worksheets(Final).Protect (1234)
End Sub

工作簿的标题是 QN6,工作表的标题是 Final。如能帮助修复代码,我们将不胜感激。

答案1

如果行Rows("57:73")位于名为的工作表上"Final",则需要对所有字符串使用引号


Option Explicit

Public Sub CommandButton1_Click()
    With ThisWorkbook.Worksheets("Final")
        .Unprotect "1234"
        .Rows("57:73").Hidden = Not .Rows("57:73").Hidden
        .Protect "1234"
    End With
End Sub

另一个选择是使用以下方法保护工作表一次Protect范围UserInterfaceOnly:=True

此子ThisWorkbook模块:


Private Sub Workbook_Open() 'in ThisWorkbook Module

    'Set UserInterfaceOnly to True to protect the user interface, but not macros

    ThisWorkbook.Worksheets("Final").Protect Password:="1234", UserInterfaceOnly:=True

End Sub

然后你就不需要为你的 Subs 中的每个动作都Unprotect创建Protect工作表

Public Sub CommandButton1_Click()

    With ThisWorkbook.Worksheets("Final")
        .Rows("57:73").Hidden = Not .Rows("57:73").Hidden
    End With

End Sub

相关内容