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

Kutools для Office — один пакет. Пять инструментов. Выполняйте больше.

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

Author Siluvia Last modified

В некоторых приложениях Excel вам может понадобиться позволить пользователям выбрать только один вариант из группы флажков — имитируя поведение переключателей. Например, как показано на скриншоте ниже, когда вы отмечаете один флажок во второй строке, все остальные флажки в группе мгновенно отключаются, обеспечивая возможность выбора только одного варианта в любой момент времени. Это ограничение полезно для форм опросов, списков с единственным выбором или дашбордов, где необходимо предотвратить множественные ответы. Реализация этой функциональности непосредственно в Excel требует особых методик, таких как использование кода VBA. Данная статья предлагает практические решения для создания эффекта «единственного выбора» с помощью флажков в Excel, включая пошаговые инструкции и важные рекомендации для реального использования.

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


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

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

1. Начните с вставки флажков там, где требуется одиночный выбор. Для этого решения вы должны использовать флажки ActiveX Controls, так как флажки Form Controls не поддерживают механизм включения/выключения напрямую. Чтобы вставить флажки ActiveX, перейдите на вкладку Разработчик > Вставить > Элементы управления ActiveX > Флажок. Расположите все флажки в пределах желаемой группы, как показано ниже:

A screenshot showing the insertion of ActiveX Control checkboxes in Excel

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

3. В окне редактора нажмите Вставить > Модуль класса. Этот шаг создает новый модуль класса, который необходим для обработки событий для нескольких флажков. Использование модуля класса позволяет реагировать на каждый щелчок по флажку индивидуально, независимо от количества флажков.

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

4. Найдите новый модуль класса в панели Свойства (обычно слева), щелкните его и в поле (Имя) переименуйте его с значения по умолчанию (например, Class1) на ClsChk. Затем скопируйте и вставьте следующий код в окно кода этого модуля класса. Скриншот для справки:

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

Код VBA1: Выбрать только один флажок за раз

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. Затем нажмите Вставить > Модуль, чтобы добавить стандартный модуль кода. Скопируйте и вставьте следующий код в окно модуля. Этот код инициализирует и «свяжет» все ваши флажки с обработчиком событий, определенным выше:

Код VBA2: Выбрать только один флажок за раз

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. Это связано с тем, что обработчики событий обновляются каждый раз при выполнении кода, гарантируя, что любые изменения в группе элементов управления правильно распознаются вашим VBA.

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


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

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

🤖 Kutools AI Aide: Совершенно новый подход к анализу данных благодаря: Интеллектуальное выполнение |  Генерация кода  |  Создание пользовательских формул |  Анализ данных и построение диаграмм  |  Вызов Kutools Functions
Популярные функции: Поиск, выделение или отметка дубликатов | Удалить пустые строки | Объединить столбцы или адреса без потери данных | Округлить ...
Супер ПОИСК: VLOOKUP по нескольким критериям | VLOOKUP по нескольким значениям | Многолистовой поиск | Распознавание нечетких соответствий ...
Расширенный раскрывающийся список: Быстро создать раскрывающийся список | Зависимый раскрывающийся список | Множественный выбор в раскрывающемся списке ...
Менеджер столбцов: Добавить определённое количество столбцов | Переместить столбцы | Переключить видимость скрытых столбцов | Сравнить диапазоны и столбцы ...
Рекомендуемые функции: Сетка фокусировки | Дизайн листа | Улучшенная строка формулы | Управление книгой и листами | Библиотека автотекста | Выбор даты | Объединить данные | Зашифровать/расшифровать ячейки | Отправить письмо по списку | Супер фильтр | Специальный фильтр (фильтр жирный/курсив/зачеркнутый...) ...
Топ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% и уменьшите количество щелчков мышью на сотни ежедневно!

Все надстройки Kutools. Один установщик

Пакет Kutools for Office включает надстройки для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro — идеально для команд, работающих в разных приложениях Office.

Excel Word Outlook Tabs PowerPoint
  • Комплексный набор — надстройки для Excel, Word, Outlook и PowerPoint плюс Office Tab Pro
  • Один установщик, одна лицензия — настройка занимает считанные минуты (MSI-совместимо)
  • Совместная работа — максимальная эффективность между приложениями Office
  • 30-дневная полнофункциональная пробная версия — без регистрации и кредитной карты
  • Лучшее соотношение цены и качества — экономия по сравнению с покупкой отдельных надстроек