Vba 如何使用密码阻止私人sub运行
我有两个用于活动x复选框的专用接头。当我单击一个按钮时,另一个按钮被锁定。我想创建一个按钮,作为覆盖,如果我键入密码,那么两个私有sub将不会运行Vba 如何使用密码阻止私人sub运行,vba,button,passwords,private,Vba,Button,Passwords,Private,我有两个用于活动x复选框的专用接头。当我单击一个按钮时,另一个按钮被锁定。我想创建一个按钮,作为覆盖,如果我键入密码,那么两个私有sub将不会运行 Private Sub CRM_box_Click() If CRM_box.Value = True Then CheckBox14.Value = False CheckBox14.Enabled = False Else CheckBox14.Value = False CheckBox14.Enabled =
Private Sub CRM_box_Click()
If CRM_box.Value = True Then
CheckBox14.Value = False
CheckBox14.Enabled = False
Else
CheckBox14.Value = False
CheckBox14.Enabled = True
End If
Private Sub RMP_box_Click()
If RMP_box.Value = True Then
CRM_box.Value = False
CRM_box.Enabled = False
Else
CRM_box.Value = False
CRM_box.Enabled = True
End If
要“覆盖”复选框的
专用子项
,可以执行以下操作:
在VBE中,创建一个模块(如果您还没有),并在第一行输入Public override As Boolean
对于复选框中的每个专用Sub,在当前If
语句上方添加以下内容:If override=False,然后按如下方式退出Sub
:
Private Sub CRM_box_Click()
If override = False Then Exit Sub
If CRM_box.Value = True Then
RMP_box.Value = False
RMP_box.Enabled = False
Else
RMP_box.Value = False
RMP_box.Enabled = True
End If
End Sub
对于问题的密码部分,您可以创建一个UserForm
如果您对用户表单不熟悉,那么有很多教程和说明,介绍如何通过在谷歌或类似网站上搜索“如何在excel中创建用户表单”之类的内容来创建用户表单
我用标签
、文本框
和命令按钮制作了一个简单的用户表单
对于命令按钮
,可以使用以下代码:
Private Sub CommandButton1_Click()
Dim pwrd As String
Dim setPwrd As String
pwrd = UserForm1.TextBox1.Text
setPwrd = "abc" 'Change this string to whatever you want your password to be
If pwrd = setPwrd Then
override = False
Unload UserForm1
Else
MsgBox "Incorrect Password" & vbNewLine & "Please try again.", vbCritical
End If
End Sub
当您在文本框中输入密码并单击commandbutton时,vba会将您的输入与变量setPassword
进行比较。如果匹配,则将公共变量override
设置为False
。如果密码不匹配,您将收到消息重试
如果执行代码之前,override=False
会将您的Private Sub
复选框指向Exit Sub
——您的代码被“overrided”
总之:
将公共变量声明为布尔值
在每个专用子项中为复选框设置If语句
创建UserForm以输入密码
编写设置密码的代码以及提交密码时发生的情况
您可能会发现有助于理解防止其他用户绕过您的密码表单的方法 你说“不会跑”是什么意思。。。这样,另一段代码就不会调用它们,或者您是否试图阻止用户进入VBA并手动运行它们?如果这是一个安全问题,那么我应该警告您,没有100%安全的共享Office文档;唯一能让人们更难做他们想做的事的方法。谢谢,这正是你所描述的。有一个问题,一旦我设置了密码和退出子启动,有没有办法反转命令?我试图用另一个密码创建另一个命令按钮flip override=true,但我的原始代码没有运行。再次感谢!我很高兴这有帮助!在复选框的代码中,将Else
添加到的末尾,如果override=False,则退出Sub
。对于第二个命令按钮,复制第一个命令按钮的确切代码,并将override=False
更改为override=True
。如果您想为第二个按钮输入不同的密码,那么这根本不是问题。只需记住哪个按钮的密码。如果回答了您的问题,请确保将答案标记为已接受,以帮助其他社区成员(如果他们有相同的问题)。