我有2个复选框,我想要做的是当我选择一个时,另一个将被取消选择,这意味着用户将无法选择另一个复选框。我想知道是否有可能这样做?
答案 0 :(得分:11)
是的,这是可能的。但为什么不使用选项按钮呢?
无论如何都要回答你的问题。
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
CheckBox2.Value = False
CheckBox2.Enabled = False
Else
CheckBox2.Enabled = True
End If
End Sub
Private Sub CheckBox2_Click()
If CheckBox2.Value = True Then
CheckBox1.Value = False
CheckBox1.Enabled = False
Else
CheckBox1.Enabled = True
End If
End Sub
<强>后续强>
感谢您的快速更新!复选框和选项按钮有什么区别?我以为他们做同样的事情? - user1204868 48秒前
Excel VBA 选项按钮(也称为单选按钮)与复选框相同,但选项按钮相互依赖,而复选框则不是。当您选中一个选项按钮时,其他选项按钮将自动取消选中。
请参阅下面的快照,了解它们的外观:)
建议您查看Excel内置的VBA帮助以获取更多详细信息;)
<强>快照:强>
HTH
西特
答案 1 :(得分:0)
我也有这个问题,因为我不想在我的表单上使用选项按钮,所以我已经为这个案例编写了一些代码并且它有效!但是可能有更合适的方法来编写这个问题的代码。请按以下列表进行操作:
(例如,您的表单中有四个复选框,它们的数量没有差异。)
1-在其属性窗口中使用适当的名称命名您的用户表单(复选框所在的位置)。 name属性是属性窗口中的第一个(在字母选项卡中)。这是为了在使用智能列表编写必要代码时,我们可以更轻松地调用userform。
例如:userform1
2-在其属性窗口中使用适当的名称命名您的复选框。 name属性是属性窗口中的第一个(在字母选项卡中)。这是为了在使用智能列表编写必要代码时,我们可以更容易地调用复选框。
例如:chkbox1,chkbox2,chkbox3和chkbox4
3-单击userform中的一个复选框(在vb编辑器中),您会看到已生成click事件。点击右侧下拉列表,然后在更新后选择&#34;&#34;事件。删除该复选框的click事件子例程,以便整理vb编辑器。
4-在此子例程之间,例如:
Private Sub Chkbox1_AfterUpdate()
End Sub
我们会写这样的代码:
Private Sub Chkbox1_AfterUpdate()
userform1.Chkbox2.Value = False
userform1.Chkbox3.Value = False
userform1.Chkbox4.Value = False
End Sub
注意1:正如您在此代码中看到的,当用户单击chkbox1时,会发生afterupdate,其中调用所有chkbox(chkbox1除外)的值并将其值变为false。
注意2:正如您所看到的,我们必须为其他复选框写这样的内容。 afterupdate事件,但要小心只为其他复选框编写代码,例如,如果你编写chkbox1的代码,那么chxbox1不应该写在它下面的代码,这个规则是针对所有其他的尊敬的复选框。如果您不根据此规则编写代码,那么您的代码将无法正常工作。
5-为其他3或等复选框写下正确的代码&#39;事先得到预防。并且代码已准备就绪。
如果您想查看必要代码的整体视图(以防万一),对于1个用户窗体上的4个复选框,它应如下所示:
Private Sub Chkbox1_AfterUpdate()
userform1.Chkbox2.Value = False
userform1.Chkbox3.Value = False
userform1.Chkbox4.Value = False
End Sub
Private Sub Chkbox2_AfterUpdate()
userform1.Chkbox1.Value = False
userform1.Chkbox3.Value = False
userform1.Chkbox4.Value = False
End Sub
Private Sub Chkbox3_AfterUpdate()
userform1.Chkbox1.Value = False
userform1.Chkbox2.Value = False
userform1.Chkbox4.Value = False
End Sub
Private Sub Chkbox4_AfterUpdate()
userform1.Chkbox1.Value = False
userform1.Chkbox2.Value = False
userform1.Chkbox3.Value = False
End Sub
注意3:您用于用户表单的名称和复选框由您决定,没有任何限制。您可以使用匈牙利语表示法来获得更多专有名称。
答案 2 :(得分:-1)
Private Sub CheckBox1_Click()
If CheckBox2.Enabled = True Then
CheckBox2.Enabled = False
Else
CheckBox2.Enabled = True
End If
End Sub