Excel VBA密码保护命令按钮

时间:2018-07-06 18:59:32

标签: excel vba

我正在处理一个非常大且有些脆弱的电子表格,我想限制对更复杂的宏(删除或添加数据的宏)的访问。我对安全性的担心比对不知道他们在删除不幸的事情的人所担心的要少。我已经使用了“输入框”密码技巧,但是必须不断重复输入密码,这有点烦人。有什么办法让宏“记住”一次我输入密码,然后在我关闭工作表之后将其重置,而不将其存储在某个位置的单元格中?

这是我当前正在使用的代码:

Sub ControlPanel()

Dim PassProtect As Variant

PassProtect = InputBox(Prompt:="Please enter the password to unlock the updater." & vbCrLf & "(Case Sensitive)", Title:="Control Panel")

  If PassProtect = vbNullString Then Exit Sub

If PassProtect = "password" Then
    ControlPanelForm.Show vbModeless    
Else: MsgBox Prompt:="Incorrect password. Please try again.", Buttons:=vbOKOnly
End If

End Sub

谢谢!

2 个答案:

答案 0 :(得分:1)

在CommandButton1_Click子过程中使用静态字符串var。输入正确后,它将在会话期间被“记住”。

<div>
    <table id="myTable" class="table table-striped table-bordered" style="width:100%">
        <thead>
            <tr>
                <th>Identifier</th>
                <th>Description</th>
            </tr>
        </thead>
        <tbody id="TableBody"></tbody>
    </table>
</div>

答案 1 :(得分:1)

当工作簿打开时,您可以使用公共变量来存储值,因此代码将变为:

Public pblnEnteredPassword As Boolean

Sub ControlPanel()

    Dim PassProtect As Variant

    If pblnEnteredPassword Then GoTo DoStuff

    PassProtect = InputBox(Prompt:="Please enter the password to unlock the updater." & vbCrLf & "(Case Sensitive)", Title:="Control Panel")

      If PassProtect = vbNullString Then Exit Sub

    If PassProtect = "password" Then
        pblnEnteredPassword = True
        GoTo DoStuff
    Else
        MsgBox Prompt:="Incorrect password. Please try again.", Buttons:=vbOKOnly
        Exit Sub
    End If

DoStuff:
    ControlPanelForm.Show vbModeless

End Sub