如何在 Excel 中实现一组复选框中仅选中一个复选框?
ms excelmicrosoft technologiesadvanced excel function更新于 2025/3/2 14:04:17
在 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 中仅选中一组复选框中的一个复选框来突出显示特定的一组数据。
相关文章
有用资源
excel 参考教程 - 该教程包含有关 excel 的更多信息:https://www.cainiaomax.com/excel/

