Note: The other languages of the website are Google-translated. Back to English

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

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

Установите только один флажок с кодом VBA


Установите только один флажок с кодом VBA

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

1. Во-первых, установите нужные флажки. Здесь вы должны вставить Флажки управления ActiveX как показано на следующем скриншоте:

2. Затем нажмите другой + Клавиши F11 одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.

3. В дебюте Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль класса.

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 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 ключ для запуска кода.

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

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


Rприподнятые статьи:


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (14)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Привет! Спасибо за это полезное руководство! У меня есть дополнительный вопрос: я работаю как со столбцами, так и со строками. Если значение одного флажка истинно, все флажки в той же строке и столбце должны быть отключены. Как я могу это сделать? Лучший, Мортен
Этот комментарий был сведен к минимуму модератором на сайте
когда я закрываю Excel и снова открываю файл, флажки перестают работать, как мне это исправить, пожалуйста?
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Сохраните книгу как книгу Excel с поддержкой макросов, чтобы сохранить коды в книге. Но когда вы снова открываете книгу, вам нужно войти в окно кода, чтобы вручную запустить код в окне модуля, чтобы активировать его.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, есть обходной путь? Я хотел бы использовать это для нескольких человек, и я уверен, что они не будут запускать код после открытия....
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день, Je suis dans la même ситуации. Возможна ли установка модуля класса "ClsChk" для автоматического отключения? 
Этот комментарий был сведен к минимуму модератором на сайте
Привет, у меня тот же вопрос, есть ли возможность открыть Excel с работающей функцией?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, извините за беспокойство. Вы можете выполнить следующие шаги, чтобы решить проблему. 1. Сохраните книгу как Excel с поддержкой макросов Книга (нажмите Файл > Сохранить как > выберите папку назначения > выберите "Excel Macro-Enabled Workbook" в Сохранить как выпадающий список > Сохраните);2. Добавьте следующий код в Эта рабочая тетрадь редактор кода, как показано на скриншоте ниже.;3. Сохраните код. Частная подпрограмма Workbook_Open()
On Error Resume Next
ClsChk_Init
End Sub

Private Sub Workbook_SheetActivate (ByVal Sh As Object)
On Error Resume Next
ClsChk_Init
End Sub

Private Sub Workbook_SheetChange (ByVal Sh как объект, ByVal Target как диапазон)
On Error Resume Next
ClsChk_Init
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуй,
ошибка появляется под первым кодом.
xObj.Object.Value = Ложь
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Арнольд, у тебя есть какая-нибудь подсказка? и какую версию Excel вы используете?
Этот комментарий был сведен к минимуму модератором на сайте
Он отлично работает, если все, что вы используете, это флажки.
Если вы добавите какие-либо другие элементы ActiveX и назначите им элементы управления, это вызовет ошибку, упомянутую Арнольдом.
Этот комментарий был сведен к минимуму модератором на сайте
Вам действительно нужно объяснить, как получить доступ к имени класса, чтобы изменить его. Кстати, ребята, это F4, чтобы открыть окно в левой части экрана, а затем отредактировать имя класса.
Этот комментарий был сведен к минимуму модератором на сайте
Я хочу получить эту функцию только построчно, а не весь лист. Как мне немного исправить этот код? Я не слишком хорошо знаком с vba. Если можно, помогите мне, пожалуйста.
Этот комментарий был сведен к минимуму модератором на сайте
Привет Мин Ко Ко,
Если вы хотите выбрать только одну опцию построчно, я рекомендую вам использовать комбинацию кнопки выбора (управление формой) и группового поля (управление формой).
1. Просто нарисуйте групповое поле на рабочем листе.
2. Держите Групповое поле выбранным, а затем нарисуйте кнопки выбора внутри поля.
3. Повторите шаги, чтобы вставить новое поле группы и кнопки выбора в новую строку.
4. Поскольку групповое поле имеет заголовок и границы, вы можете применить приведенный ниже код VBA в окне кода модуля, чтобы скрыть все заголовки и границы групповых полей на текущем рабочем листе.
Sub ToggleVisible()
Dim myGB как GroupBox
Для каждого myGB в ActiveSheet.GroupBoxes
myGB.Visible = Ложь
Следующий мой ГБ
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Bonjour, Merci pour ce tuto tout fonctionne. Cependant, je suis obligé d'executer manuellement le "ClsChk" à chaque fois pour que cela fonctionne, mon fichier est un fichier groupe pour la société, serait-il возможно, что он сам себе автоматизируется? Мерси д’Аванс.
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL