【发布时间】:2011-03-04 14:18:04
【问题描述】:
我在表单工具栏中有 50 多个复选框的电子表格。在少数情况下,您只能选中一组中的 1 个复选框,即选中复选框 1 到复选框 5 中的一个复选框。
如果可能的话,我正在尝试在没有任何代码的情况下实现这一目标。选项按钮不是首选,因为我想要一个统一的电子表格。
您如何将复选框 1 到复选框 5 分组,以便它们成为一个组互斥的。
谢谢
【问题讨论】:
我在表单工具栏中有 50 多个复选框的电子表格。在少数情况下,您只能选中一组中的 1 个复选框,即选中复选框 1 到复选框 5 中的一个复选框。
如果可能的话,我正在尝试在没有任何代码的情况下实现这一目标。选项按钮不是首选,因为我想要一个统一的电子表格。
您如何将复选框 1 到复选框 5 分组,以便它们成为一个组互斥的。
谢谢
【问题讨论】:
为什么您认为选项(单选)按钮是互斥的?我有两个在一个组中。当我单击其中一个时,另一个会打开。并且没有办法取消选择它们。它们最初按预期工作,但是当我为一个不相关的控件创建第二组时,它带有一个带有另外两个选项按钮的不同链接框,奇怪的行为开始了。到目前为止,我能做的最好的事情是为每个控件组合和 NO 组设置一个单独的单选按钮。
【讨论】:
您可能希望使用单选按钮,并可能在组之间使用分隔符,因为这也向最终用户表明这些字段是互斥的。
根据定义,单选按钮在组内是互斥的。
请记住,在您应该使用单选框的地方使用复选框会让您的最终用户感到困惑,因为他们想知道为什么该复选框会突然停用,而使用单选按钮时,混淆因素不存在。
【讨论】:
如果你不能使用选项按钮,试试这个代码
Private Sub CheckBox1_Change()
With Me.CheckBox1
If .Value Then ClearGroup .GroupName, .Name
End With
End Sub
Private Sub CheckBox2_Change()
With Me.CheckBox2
If .Value Then ClearGroup .GroupName, .Name
End With
End Sub
Private Sub CheckBox3_Change()
With Me.CheckBox3
If .Value Then ClearGroup .GroupName, .Name
End With
End Sub
Private Sub ClearGroup(sGroup As String, sName As String)
Dim ole As OLEObject
For Each ole In Me.OLEObjects
If TypeName(ole.Object) = "CheckBox" Then
If ole.Object.GroupName = sGroup And ole.Name <> sName Then
ole.Object.Value = False
End If
End If
Next ole
End Sub
【讨论】: