我使用这行代码将单元格锁定在电子表格中。
Range("A1:D23").Select
Selection.Locked = True
ActiveSheet.Protect Contents:=True
每当我点击一个单独的单元格时,会提示我,以便从审阅标签取消保护工作表,并可能会提示您输入密码。
我的问题是,它没有提示输入密码。如果他想要取消保护,我该如何设置密码。其次我想传递他选择要更改的行信息,并希望在相邻的只读单元格时创建一个按钮用于编辑。
答案 0 :(得分:1)
我得到你问题的第一部分。您需要在工作表的Protect
方法中指定密码参数:
Sub lockSheet()
With ActiveSheet
'Check sheet is not already protected
If Not .ProtectContents Then
'Clear any existing lock settings
.Cells.Locked = False
.Range("A1:D23").Locked = True
.Protect Contents:=True, Password:="pw"
End If
End With
End Sub
请注意,在修改范围之前无需选择范围,只需将操作直接应用于范围即可。
密码在明文中显而易见,如果您需要保护到任何程度,那么您还需要apply a password to the VBA project。
要解决问题的第二部分,请在评论中修改:
Private Sub Worksheet_SelectionChange(ByVal target As Range)
If target.Locked Then
With ActiveSheet
.Unprotect
If Not .ProtectContents Then
target.Locked = False
.Protect Contents:=True, Password:="pw"
End If
End With
End If
End Sub
这需要添加到工作表模块中。