如何在Excel中仅允许选择一组复选框中的一个复选框
在Excel中,复选框是用户从选项列表中进行选择的一种方便的方式。然而,有时您希望将一组复选框的选择限制为每次仅选择一个复选框。在设计表单、调查或其他需要进行互斥选择的情况下,这尤其有帮助。
在本教程中,我们将了解如何使用Excel来强制执行单个复选框选择。通过本课程的学习,您将能够自信地应用这些方法来构建一组复选框,其中只能选择一个复选框,而不管您对Excel的熟悉程度如何。所以,让我们开始学习,通过成为Excel复选框选择限制专家来简化选择过程吧!
仅允许在一组复选框中选择一个复选框
首先,我们将创建一个类模块,然后创建一个VBA模块,最后运行它来完成任务。那么让我们看看如何在Excel中只允许选择一组复选框中的一个复选框的简单过程。
步骤1
考虑一个Excel表格,其中有多个复选框。
首先,右键单击工作表名称,选择“查看代码”以打开VBA应用程序。
右键单击 > 查看代码
步骤2
然后点击“插入”,选择“类模块”,然后将下面的代码复制到文本框中。
插入 > 类模块 > 复制
代码
Option Explicit
Public WithEvents Chk As MSForms.CheckBox
Private Sub Chk_Click()
Call SelOneCheckBox(Chk)
End Sub
Sub SelOneCheckBox(Target As Object)
Dim xObj As Object
Dim I As String
Dim n As Integer
If Target.Object.Value = True Then
I = Right(Target.Name, Len(Target.Name) - 8)
For n = 1 To ActiveSheet.OLEObjects.Count
If n <> Int(I) Then
Set xObj = ActiveSheet.OLEObjects.Item(n)
xObj.Object.Value = False
xObj.Object.Enabled = False
End If
Next
Else
I = Right(Target.Name, Len(Target.Name) - 8)
For n = 1 To ActiveSheet.OLEObjects.Count
If n <> Int(I) Then
Set xObj = ActiveSheet.OLEObjects.Item(n)
xObj.Object.Enabled = True
End If
Next
End If
End Sub
步骤3
然后将类名更改为ClsChk。
第四步
然后再次点击插入,选择模块,并将下面的代码复制到文本框中。
插入 > 模块 > 复制
代码
Dim xCollection As New Collection
Public Sub ClsChk_Init()
Dim xSht As Worksheet
Dim xObj As Object
Dim xChk As ClsChk
Set xSht = ActiveSheet
Set xCollection = Nothing
For Each xObj In xSht.OLEObjects
If xObj.Name Like "CheckBox**" Then
Set xChk = New ClsChk
Set xChk.Chk = CallByName(xSht, xObj.Name, VbGet)
xCollection.Add xChk
End If
Next
Set xChk = Nothing
End Sub
第五步
然后点击 F5 来运行该模块。然后您将看到只有一个复选框可以被勾选一次。
结论
在本教程中,我们使用了一个简单的示例来演示如何在Excel中仅选择一个复选框来突出显示特定的数据集。