如何在 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。

步骤 4

然后再次单击“插入”,选择“模块”,并将以下代码复制到文本框中。

插入 > 模块 > 复制。

代码

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

步骤 5

然后单击 F5 运行模块。然后您将看到一次只能选中一个复选框。

结论

在本教程中,我们使用了一个简单的示例来演示如何在 Excel 中只允许在一个复选框组中选择一个复选框,以突出显示特定数据集。

更新于: 2023-09-06

960 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告