Как разрешить выбор только одного флажка в группе в Excel?
Как показано на скриншоте ниже, для группы флажков, размещенных в строке 2, при выборе или отметке одного флажка все остальные автоматически отключаются. Как этого добиться? Код VBA в этой статье может помочь вам.

Разрешите выбор только одного флажка с помощью кода VBA
Разрешите выбор только одного флажка с помощью кода VBA
Вы можете запустить следующий код VBA, чтобы выбрать только один флажок в группе за раз. Пожалуйста, действуйте следующим образом.
1. Сначала вставьте флажки по мере необходимости. Здесь вы должны вставить флажки ActiveX Control, как показано на следующем скриншоте:

2. Затем одновременно нажмите клавиши Alt + F11, чтобы открыть окно Microsoft Visual Basic for Applications.
3. В открывшемся окне Microsoft Visual Basic for Applications нажмите Вставить > Модуль класса.

4. Измените имя класса на ClsChk в поле (Имя) панели Свойства, а затем скопируйте и вставьте следующий код VBA в соответствующее окно Кода. Смотрите скриншот:

Код VBA 1: Выбор только одного флажка за раз
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 Sub5. Теперь нажмите Вставить > Модуль, затем скопируйте и вставьте следующий код VBA в окно Модуля.
Код VBA 2: Выбор только одного флажка за раз
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 Sub6. Нажмите клавишу F5, чтобы запустить код.
С этого момента, при отметке любого из флажков на листе, все остальные флажки автоматически отключаются, и вы можете снять отметку, чтобы снова активировать все флажки.

Примечание: Если новый флажок добавлен в группу флажков, повторно запустите код VBA, чтобы снова активировать все флажки. Удаление флажка из группы также требует повторного запуска кода.
Связанные статьи:
- Как фильтровать данные на основе флажка в Excel?
- Как скрыть флажок, когда строка скрыта в Excel?
- Как выделить ячейку или строку с помощью флажка в Excel?
- Как создать выпадающий список с несколькими флажками в Excel?
- Как вставить отметку даты в ячейку при отметке флажка в Excel?
Лучшие инструменты для повышения продуктивности в Office
Повысьте свои навыки работы в Excel с Kutools для Excel и ощутите новую эффективность. Kutools для Excel предлагает более300 расширенных функций для повышения продуктивности и экономии времени. Щелкните здесь, чтобы получить наиболее нужную вам функцию...
Office Tab добавляет вкладочный интерфейс в Office, делая вашу работу значительно проще
- Включите редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
- Открывайте и создавайте несколько документов во вкладках одного окна, а не в новых окнах.
- Увеличьте свою продуктивность на50% и сократите сотни кликов мышью ежедневно!