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

Як зробити лише один прапорець для вибору в групі прапорців у Excel?

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

Встановіть лише один прапорець, який потрібно встановити за допомогою коду VBA


Встановіть лише один прапорець, який потрібно встановити за допомогою коду VBA

Ви можете запустити наведені нижче коди VBA, щоб за раз встановити лише один прапорець у групі. Будь ласка, виконайте наступне.

1. По-перше, будь ласка, вставте прапорці, як вам потрібно. Тут слід вставити Прапорці ActiveX Control як показано на наступному скріншоті:

2. Потім натисніть інший + Клавіші F11 одночасно, щоб відкрити Microsoft Visual Basic для додатків вікна.

3. На відкритті Microsoft Visual Basic для додатків вікна, натисніть Insert > Модуль класу.

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. Тепер натисніть Insert > Модулі, а потім скопіюйте та вставте наведений нижче код 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 для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

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

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (14)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Привіт! Дякую за цей корисний посібник! У мене є додаткове запитання: я працюю як зі стовпцями, так і з рядками. Якщо одне значення прапорця відповідає дійсності, усі прапорці в одному рядку та стовпці мають бути вимкнені. Як мені це зробити? Найкраще, Мортен
Цей коментар був мінімізований модератором на сайті
коли я закриваю Excel і знову відкриваю файл, прапорці перестають працювати, як це виправити, будь ласка?
Цей коментар був мінімізований модератором на сайті
привіт,
Будь ласка, збережіть книгу як книгу Excel з підтримкою макросів, щоб зберегти коди в книзі. Але коли ви знову відкриєте книгу, вам потрібно зайти у вікно коду, щоб вручну запустити код у вікні модуля, щоб активувати його.
Цей коментар був мінімізований модератором на сайті
Привіт, чи є вихід? Я хотів би використовувати це для кількох людей, і я впевнений, що вони не запускатимуть код після відкриття....
Цей коментар був мінімізований модератором на сайті
Bonjour, Je suis dans la même position. Чи можливий модуль класу "ClsChk" для автоматичного звільнення? 
Цей коментар був мінімізований модератором на сайті
Привіт, у мене те саме запитання, чи є можливість відкрити Excel, коли функція працює?
Цей коментар був мінімізований модератором на сайті
Привіт, вибачте за неприємності. Щоб вирішити проблему, виконайте наведені нижче дії.1. Збережіть робочу книгу як файл Увімкнено макрос Excel Робочий зошит (Натисніть філе > Зберегти як > виберіть папку призначення > виберіть "Книга Excel з підтримкою макросів" в Зберегти як спадний список > зберегти);2. Додайте наступний код до ThisWorkbook редактор коду, як показано на скріншоті нижче.;3. Збережіть код. Приватна додаткова робоча книга_Open()
On Error Resume Next
ClsChk_Init
End Sub

Приватна підкладка Workbook_SheetActivate(ByVal Sh як об’єкт)
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 = False
Далі myGB
End Sub
Цей коментар був мінімізований модератором на сайті
Bonjour, Merci pour ce tuto tout fonctionne. Cependant, je suis obligé d'éxécuter manuellement le "ClsChk" à chaque fois pour que cela fonctionne, mon fichier est un fichier groupe pour la société, serait-il possible qu'il se lance automatiquement ? Merci d'avance.
There are no comments posted here yet
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL