Перейти к содержимому

Как разрешить выбор только одного флажка в группе в Excel?

Author: Siluvia Last Modified: 2025-08-07

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

A screenshot of a group of checkboxes in Excel where only one can be selected at a time

Разрешите выбор только одного флажка с помощью кода VBA


Разрешите выбор только одного флажка с помощью кода VBA

Вы можете запустить следующий код VBA, чтобы выбрать только один флажок в группе за раз. Пожалуйста, действуйте следующим образом.

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

A screenshot showing the insertion of ActiveX Control checkboxes in Excel

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

3. В открывшемся окне Microsoft Visual Basic for Applications нажмите Вставить > Модуль класса.

A screenshot showing the option to insert a Class Module in Excel VBA

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

A screenshot of the Properties pane in VBA for renaming the class to ClsChk

Код 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 Sub

5. Теперь нажмите Вставить > Модуль, затем скопируйте и вставьте следующий код 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 Sub

6. Нажмите клавишу F5, чтобы запустить код.

С этого момента, при отметке любого из флажков на листе, все остальные флажки автоматически отключаются, и вы можете снять отметку, чтобы снова активировать все флажки.

A screenshot of checkboxes in Excel where only one is enabled at a time after VBA code execution

Примечание: Если новый флажок добавлен в группу флажков, повторно запустите код VBA, чтобы снова активировать все флажки. Удаление флажка из группы также требует повторного запуска кода.


Связанные статьи:

Лучшие инструменты для повышения продуктивности в Office

🤖 Kutools AI Aide: Переворот в анализе данных на основе: Интеллектуальное выполнение   |  Сгенерировать код  |  Создать Пользовательские Формулы  |  Анализ данных и генерация диаграмм  |  Вызов Kutools Functions
Популярные функции: Найти, выделить или отметить дубликаты   |  Удалить пустые строки   |  Объединить столбцы или ячейки без потери данных   |   Округлить...
Супер ПОИСК: VLookup с несколькими критериями    VLookup с несколькими значениями  |   Многолистовой поиск   |   Распознавание нечетких соответствий ....
Расширенный раскрывающийся список: Быстро создать раскр. список   |  Зависимый раскрывающийся список   |  Множественный выбор в раскрывающемся списке ....
Менеджер столбцов: Добавить определенное количество столбцов  |  Переместить столбцы  |  Переключить статус видимости скрытых столбцов  |  Сравнить диапазоны и столбцы ...
Рекомендуемые функции: Сетка фокусировки   |  Дизайн листа   |   Улучшенная строка формулы    Управление книгой и листами   |  Библиотека автотекста (Auto Text)   |  Выбор даты   |  Объединить данные   |  Шифрование/Расшифровка ячеек    Отправить письмо по списку   |  Супер фильтр   |   Специальный фильтр (фильтр по жирному/курсиву/зачеркиванию...) ...
Топ–15 наборов инструментов: 12 текстовых инструментов (Добавить текст, Удалить определенные символы, ...)   |   50+ типов диаграмм (Диаграмма Ганта, ...)   |   40+ практических формул (Расчет возраста на основе даты рождения, ...)   |   19 инструментов вставки (Вставить QR-код, Вставить изображение из пути, ...)   |  12 инструментов преобразования (Преобразовать в слова, Конвертация валюты, ...)   |  7 инструментов объединения и разделения (Расширенное объединение строк, Разделить ячейки, ...)   |   ... и многое другое
Используйте Kutools на вашем предпочитаемом языке – поддерживаются английский, испанский, немецкий, французский, китайский и более40 других языков!

Повысьте свои навыки работы в Excel с Kutools для Excel и ощутите новую эффективность. Kutools для Excel предлагает более300 расширенных функций для повышения продуктивности и экономии времени.  Щелкните здесь, чтобы получить наиболее нужную вам функцию...


Office Tab добавляет вкладочный интерфейс в Office, делая вашу работу значительно проще

  • Включите редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Открывайте и создавайте несколько документов во вкладках одного окна, а не в новых окнах.
  • Увеличьте свою продуктивность на50% и сократите сотни кликов мышью ежедневно!