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

Как снять отметку с другого флажка, когда флажок отмечен в Excel?

Author: Siluvia Last Modified: 2025-08-07

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

Снятие отметки с другого флажка при отметке нового флажка с помощью кода VBA


Снятие отметки с другого флажка при отметке нового флажка с помощью кода VBA

Как показано в приведенной выше демонстрации, десять флажков с именами Checkbox1, Checkbox2, Checkbox3, ..., Checkbox10 разделены на 3 группы и расположены в разных категориях таблицы.

В этом примере Checkbox1, 2, 3 находятся в одной группе, Checkbox4, 5, 6, 7 — в другой группе, а Checkbox8, 9, 10 — в той же группе. В каждой группе одновременно может быть отмечен только один флажок. Когда один флажок отмечен, другой флажок автоматически снимается.

Теперь давайте посмотрим, как применить следующий код VBA для решения этой проблемы.

1. Щелкните правой кнопкой мыши вкладку листа и выберите Вид кода в контекстном меню.

A screenshot showing the option View Code in the context menu of a sheet tab in Excel

2. В открывшемся окне Microsoft Visual Basic for Applications вставьте следующий код VBA в окно Лист (Код).

A screenshot of the VBA code editor in Excel with example VBA code for managing checkboxes

Код VBA: Снятие отметки с другого флажка при отметке нового флажка

Dim xBol As Boolean
'Updated by Extendoffice 20220816
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 x As Long
Dim xAllArr
Dim xArrItem
Dim xI, xJ
If Not xBol Then Exit Function
'In the following line, the checkboxes enclosed in double quotes belong to the same group, and each checkbox is separated by a comma. To add more checkbox groups, please enclose the checkboxes in new double quotes.
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

Примечания:

1) В коде Checkbox1, Checkbox2, ..., Checkbox10 — это названия флажков;
2) В следующей строке флажки, заключенные в двойные кавычки, принадлежат к одной группе, и каждый флажок разделен запятой. Чтобы добавить больше групп флажков, пожалуйста, заключите флажки в новые двойные кавычки.
xAllArr = Array("CheckBox1,CheckBox2,CheckBox3", "CheckBox4,CheckBox5,CheckBox6,CheckBox7", "CheckBox8,CheckBox9,CheckBox10")
3) Флажки являются флажками ActiveX Control.

3. Нажмите клавиши Alt + Q, чтобы закрыть окно Microsoft Visual Basic for Applications.

Затем, когда вы отметите новый флажок в группе, предыдущий отмеченный флажок будет автоматически снят, как показано в gif ниже.


Демонстрация: Снятие отметки с другого флажка при отметке флажка в Excel

Kutools для Excel: Более 300 удобных инструментов у вас под рукой! Наслаждайтесь постоянно бесплатными функциями ИИ! Скачать сейчас!

Лучшие инструменты для повышения продуктивности в 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% и сократите сотни кликов мышью ежедневно!