我创建了一个非常简单的宏来切换隐藏和取消隐藏行。我对 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