是否可以选择一个复选框并取消选择其他复选框? (需要VBA)

问题描述:

我有2个复选框,我想要做的是当我选择一个,另一个1将被取消选择,这意味着用户将无法选择其他复选框。我想知道是否有可能这样做?是否可以选择一个复选框并取消选择其他复选框? (需要VBA)

是的,这是可能的。但为什么不使用选项按钮呢?

无论如何回答您的查询。

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帮助;)

快照:

enter image description here

HTH

Sid

+0

感谢您的快速更新!复选框和选项按钮有什么区别?我以为他们做同样的事情? – user1204868 2012-03-20 09:01:09

+0

好..但请不要删除复选框的答案..我认为这也会使其他人受益! :) – user1204868 2012-03-20 09:03:23

+0

以上发布更新:) – 2012-03-20 09:07:55

我也有这个问题,因为我不想在我的表单上使用选项按钮,所以我已经写了一些代码,这种情况下,它的作品!但是,为这个问题编写代码可能更合适。与

(例如你在你形成四个复选框,则在他们的数目没有区别。)

1名您的用户窗体(该复选框上):请执行以下列表在它的属性窗口中有适当的名字。 name属性是属性窗口中的第一个(在字母标签中)。这是为了让我们可以更轻松地使用intelisense列表编写必要的代码时调用用户表单。

例如:userform1

2 - 说出你的复选框,在其属性窗口一个合适的名称。 name属性是属性窗口中的第一个(在字母标签中)。这是为了让我们可以在使用intelisense列表编写必要的代码时更容易接近调用复选框。

例如为:chkbox1,chkbox2,chkbox3和chkbox4

3-点击在用户窗体(在VB编辑器)复选框之一,您会看到已经产生的单击事件。点击右侧下拉列表并选择“更新后”事件。清除该复选框的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 ,会发生后续更新,其中所有chkbox(chkbox1除外)的值都会被调用,并且它们的值会变为false。注意2:正如你所看到的,我们必须为其他复选框的afterupdate事件编写这样的内容,但要小心地为其他复选框编写代码,例如,如果你编写的代码为chkbox1,那么chxbox1应该不会被写在它下面的代码中,这个规则是尊重所有其他复选框。如果您不根据此规则编写代码,那么您的代码将无法正常工作。

5-为其他3个或类似复选框的后续事件写下正确的代码。代码已准备好工作。

如果你想看到的必要的代码(以防万一)的总体视图,4个复选框1个窗体,它应该是这样的:

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:您使用的名称用户表单和复选框取决于你,没有限制。您可以使用匈牙利符号来获得更多专有名称。