如何在 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 中仅选中一组复选框中的一个复选框来突出显示特定的一组数据。


相关文章


有用资源