当有人点击excel中的unprotect工作表并创建一个用于编辑的按钮时,如何设置密码

时间:2010-08-25 10:22:21

标签: excel vba

我使用这行代码将单元格锁定在电子表格中。

Range("A1:D23").Select
Selection.Locked = True
ActiveSheet.Protect Contents:=True

每当我点击一个单独的单元格时,会提示我,以便从审阅标签取消保护工作表,并可能会提示您输入密码。

我的问题是,它没有提示输入密码。如果他想要取消保护,我该如何设置密码。其次我想传递他选择要更改的行信息,并希望在相邻的只读单元格时创建一个按钮用于编辑。

1 个答案:

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

这需要添加到工作表模块中。