我有两个用于活动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
答案 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中创建用户表单”或类似内容来创建它们的教程和说明。
我使用UserForm
,label
和textbox
制作了一个简单的commandbutton
。 See 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
- 您的代码会被“覆盖”。
总结:
您可能会发现this answer有助于了解阻止其他用户绕过您的密码表单的方法。