如何使用密码阻止私有子运行

时间:2018-05-02 09:27:09

标签: vba button passwords private

我有两个用于活动x复选框的私有子服务器。当我单击一个按钮时,另一个按钮被锁定。我想创建一个可以作为覆盖的按钮,如果我输入密码,那么两个私人潜艇将不会运行。

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

1 个答案:

答案 0 :(得分:0)

要“覆盖”复选框的Private Sub,您可以执行以下操作:

在您的VBE中,创建一个模块(如果您还没有)并在第一行输入Public override As Boolean

对于每个复选框的私有子,请在当前If语句上方添加以下内容:If override = False Then Exit 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

如果您不熟悉UserForms,那么有许多关于如何通过搜索Google中的“如何在Excel中创建用户表单”或类似内容来创建它们的教程和说明。

我使用UserFormlabeltextbox制作了一个简单的commandbuttonSee here.

对于commandbutton,您可以使用以下代码:

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

当您在文本框中输入密码并单击命令按钮时,vba会将您的输入与变量setPassword进行比较。如果匹配,则将公共变量override设置为False。如果密码不匹配,您将收到一条消息,请重试。

如果override = False在执行代码之前它会将Private Sub的复选框指向Exit Sub - 您的代码会被“覆盖”。

总结:

  1. 将公共变量声明为布尔值。
  2. 在每个私有子中为您的复选框设置一个If语句。
  3. 创建用户窗口以输入密码。
  4. 编写代码以设置密码以及提交密码时会发生的情况。
  5. 您可能会发现this answer有助于了解阻止其他用户绕过您的密码表单的方法。