单个工作表密码

时间:2011-11-16 00:42:00

标签: excel vba

我在Excel中使用了“保护工作表”选项,但此外,我还要求用户在点击每张纸时输入密码。每张纸都有一个特定的密码。如果您不知道密码,我不希望用户能够修改工作表上的任何内容。他们可以打印,但不能修改任何东西。我每张都有一个密码,但我使用的代码不起作用......也许它太基本了......有人可以帮忙吗?

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

    Dim Msg As String
    Dim UserEntry As Variant

    Msg = InputBox("What is the password?")

    Do
        Sheet1.Activate
        UserEntry = InputBox(Msg)

            If UserEntry = "test" Then Exit Sub
            If UserEntry = False Then
            Msg = "Invalid Password!"
            Msg = Msg & vbNewLine
            Msg = Msg & "What is the password?"

    Loop
    Sheet1.Activate = UserEntry

End Sub

3 个答案:

答案 0 :(得分:2)

虽然它可能取决于您的Excel版本(我在2007年测试过),但只需右键单击该标签并选择“保护表”。您可以单独为每个工作表设置密码。

用户只需转到功能区中的“审核”选项卡,然后选择“取消保护表”并输入密码。

你真的想避免通过VBA设置密码,因为很容易进入代码找到密码。

答案 1 :(得分:0)

在ThisWorkbook模块中试试

    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
        On Error GoTo WrongPassword
            Sh.Unprotect

        CleanUp:

            Exit Sub

        WrongPassword:

            MsgBox "Wrong Password"

    End Sub

答案 2 :(得分:0)

以下是基础知识,您可以添加对无效密码的检查。

Private Sub Worksheet_Activate()

Dim Msg As String
Dim UserEntry As String

Msg = InputBox("What is the password?")

If Msg = "test" Then

    ActiveSheet.Unprotect ("password")

End If

End Sub