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