KutoolsforOffice — 一套方案,五大工具。事半功倍。

如何在 Excel 中实现选中一个复选框时自动取消选中另一个?

作者Siluvia修改日期

在许多实际场景中(例如在 Excel 中管理冗长的采购清单),您可能需要确保在特定类别或组内仅能选择一个选项。例如,当某些类别超出预算时,您可能需要重新选择项目,以保证每组中仅保留一个已选中的项。在大型列表中手动管理复选框不仅效率低下,还容易出错,尤其在类别数量增多时更为明显。为简化这一流程并减少错误,您可以配置 Excel,使其在同一组内选中新复选框时,自动取消之前选中的复选框,从而确保每个类别在任何时刻都只有一个选中项。本文将为您提供分步指南,助您高效、可靠地实现这一目标。


使用 VBA 代码实现在选中新复选框时自动取消选中另一个复选框

为清晰说明操作流程,请参考上方视频所示场景:您有十个复选框,名称分别为 CheckBox 1CheckBox 10,并分为三组,分别代表不同的采购类别。

✅ 分组结构:

  • 组 1:CheckBox 1、CheckBox 2、CheckBox 3
  • 组 2:CheckBox 4、CheckBox 5、CheckBox 6、CheckBox 7
  • 组 3:CheckBox 8、CheckBox 9、CheckBox 10

每组内仅可选中一个复选框。当选中新复选框时,同组其他复选框将自动取消选中——行为类似选项按钮,但采用复选框形式。

🧩 应用 VBA 解决方案的步骤:

  1. 打开 VBA 编辑器:右键单击放置复选框的工作表标签,然后选择查看代码
  2. 查看代码菜单
  3. 将以下代码粘贴到工作表的代码窗口中:
  4. Dim xBol As Boolean
    'Updated by Extendoffice
    
    Private Sub CheckBox1_Change(): SetCheckBoxes "CheckBox1": End Sub
    Private Sub CheckBox2_Change(): SetCheckBoxes "CheckBox2": End Sub
    Private Sub CheckBox3_Change(): SetCheckBoxes "CheckBox3": End Sub
    Private Sub CheckBox4_Change(): SetCheckBoxes "CheckBox4": End Sub
    Private Sub CheckBox5_Change(): SetCheckBoxes "CheckBox5": End Sub
    Private Sub CheckBox6_Click(): SetCheckBoxes "CheckBox6": End Sub
    Private Sub CheckBox7_Click(): SetCheckBoxes "CheckBox7": End Sub
    Private Sub CheckBox8_Click(): SetCheckBoxes "CheckBox8": End Sub
    Private Sub CheckBox9_Click(): SetCheckBoxes "CheckBox9": End Sub
    Private Sub CheckBox10_Click(): SetCheckBoxes "CheckBox10": End Sub
    
    Private Function SetCheckBoxes(mCheckBoxName As String)
        Dim xAllArr, xArrItem
        Dim xI, xJ
        If Not xBol Then Exit Function
        xAllArr = Array("CheckBox1,CheckBox2,CheckBox3", _
                       "CheckBox4,CheckBox5,CheckBox6,CheckBox7", _
                       "CheckBox8,CheckBox9,CheckBox10")
        For xI = LBound(xAllArr) To UBound(xAllArr)
            If InStr(xAllArr(xI), mCheckBoxName) > 0 Then
                xBol = False
                xArrItem = Split(xAllArr(xI), ",")
                For xJ = LBound(xArrItem) To UBound(xArrItem)
                    If xArrItem(xJ) <> mCheckBoxName Then
                        Me.OLEObjects(xArrItem(xJ)).Object.Value = False
                    End If
                Next
            End If
        Next
        xBol = True
    End Function
    
    Private Sub Worksheet_Activate(): xBol = True: End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range): xBol = True: End Sub
  5. 按下 Alt + Q 关闭 VBA 编辑器,返回 Excel 以测试复选框。

📌 重要说明:

  • 确保复选框的名称属性(而非标签)与代码中的名称完全一致。
  • 分组在数组行中定义:
    xAllArr = Array("CheckBox1,CheckBox2,CheckBox3", "CheckBox4,CheckBox5,CheckBox6,CheckBox7", "CheckBox8,CheckBox9,CheckBox10")
  • 此 VBA 仅适用于 ActiveX 控件复选框,不适用于表单控件。
  • 必须启用宏,此自动化功能方可正常运行。

📺 演示:

🔍 故障排除提示:

  • 请确认复选框名称无重复。
  • 确保所有复选框均为 ActiveX 控件
  • 每个复选框操作都必须正确调用 SetCheckBoxes
  • 跨工作表场景需通过类模块或集中控制进行适配。

💡 替代方案:您可以使用表单控件中的选项按钮实现内置的单选功能。然而,若需更高级的布局与逻辑控制,VBA 搭配复选框则更为灵活。

✨ 提示:Kutools for Excel 等工具提供基于图形界面的复选框管理功能,无需编码即可轻松设置。


演示:在 Excel 中选中一个复选框时自动取消选中另一个

 
Kutools for Excel:超过 300 款实用工具触手可及!畅享 AI 驱动的功能,让工作更智能、更高效!立即下载!

最佳办公效率工具

🤖KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行   |  生成代码|  创建自定义公式  |  数据分析及生成图表|  调用 Kutools Functions……
热门功能查找、高亮或标记重复项   |  删除空白行   |  合并列或单元格且不丢失数据   |  不使用公式的四舍五入……
高级 LOOKUP多条件 VLookup  |  多值 VLookup  |   跨多工作表 VLookup   |   模糊查找……
高级下拉列表快速创建下拉列表   |  级联下拉列表   |  多选下拉列表……
列管理器添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列……
特色功能网格聚焦   |  设计视图   |增强编辑栏   | 工作簿和表管理器   |  资源库(自动文本)|  日期提取   |  汇总工作表  |  加密/解密单元格   | 按列表发送邮件   |  超级筛选   |   特殊筛选(筛选粗体单元格/斜体/删除线……) ......
精选 15 工具集12 文本工具添加文本删除特定字符,……)|   50+ 图表 类型甘特图,……)|   40+ 实用公式基于生日计算年龄,……)|   19 插入工具插入二维码从路径插入图片,……)|   12 转换工具小写金额转大写汇率转换,……)|   7 合并和拆分工具高级合并行分割单元格,……)|……更多
在您的首选语言中使用 Kutools – 支持英语、西班牙语、德语、法语、中文及 40+ 种其他语言!

使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……


Office Tab 为 Office 带来标签式界面,让您的工作更轻松

  • 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读
  • 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
  • 将您的工作效率提升 50%,每天减少数百次鼠标点击!

所有 Kutools 插件,一个安装程序

Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。

ExcelWordOutlookTabsPowerPoint
  • 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
  • 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
  • 协同效果更佳— 在多个 Office 应用中实现高效协同
  • 30 天全功能试用— 无需注册,无需信用卡
  • 超值之选— 比单独购买插件更省钱