Excel / VBA - Як створити декілька прапорців

Excel / VBA - Як створити декілька прапорців

У цій статті ви дізнаєтеся, як створювати прапорці, які автоматично пов'язані з певними клітинами. VBA не дозволяє створювати декілька прапорців одночасно. Можна вручну посилати прапорці на певні клітинки (Копіювати / Вставити). Для кожної копії вашого прапорця потрібно вибрати клітинку. Це досить трудомістке завдання!

Починаємо

Тип контролю

  • У форматі Excel і елементах керування ActiveX існують два типи прапорців. У цій статті ми будемо використовувати тип форми.

Уникайте перевантаження аркуша Excel занадто великою кількістю елементів

  • Excel не завжди добре обробляє переповнену сторінку (дисплей), особливо якщо ви маєте намір використовувати книгу на декількох версіях Excel.

Створення прапорців

Для кожного з ваших прапорців буде дві важливі клітинки:
  • Позиційна клітина : та, яку ми намалюємо.
  • Зв'язана клітина : одна, в якій ми повернемо результат нашого прапорця.
  • Зауважимо, що в цьому прикладі позиційна комірка і пов'язана клітина однакові. Перевірка або скасування цього поля повертає TRUE або FALSE у пов'язану клітинку. На жаль, Excel не дає можливості встановити декілька прапорців. Є два можливих рішення для подолання цього обмеження:

Рішення 1

Цей простий код VBA, коли (вручну) спрацьовує, буде генерувати прапорці разом з пов'язаними клітинами.

Код

  • З робочої книги натисніть ALT + F11, щоб отримати доступ до редактора VBA.
  • Натисніть Вставити> Модуль .
  • Скопіюйте та вставте наведений нижче код:

 Варіант Явний Sub Inserer_Cases_a_cocher_Liees () Dim rngCel Як діапазон Dim ChkBx As CheckBox для кожного rngCel у виборі з rngCel.MergeArea.Cells Якщо .Resize (1, 1) .Address = rngCel.Address Тоді 'Pour ne pas afficher la valeur de la cellule '.NumberFormat = ";;;" Встановіть ChkBx = ActiveSheet.CheckBoxes.Add (.Left, .Top, .Width, .Height) За допомогою команди ChkBx 'valeur par défaut:. Адреса 'Texte de remplacement' .Characters.Text = "TITI" 'texte' .Text = "Toto" 'ou: .Caption = "Toto"' bordure: З. Border 'Стиль ligne' .LineStyle = xlLineStyleNone 'ou xlContinuous 'ou xlDashDot або xlDashDotDot xlDot' couleur '.ColorIndex = 3' 3 = rouge 'epaisseur du trait' .Weight = 4 End За допомогою 'accessibles aussi les propriétés .Locked, .Name, .Enabled etc. Завершити за допомогою наступного підпункту rngCel End 

Щоб використати цей код:

З будь-якого аркуша вашої робочої книги:
  • Виберіть діапазон осередків, де потрібно вставити прапорці,
  • Натисніть Alt + F8 .
  • Виберіть модуль і натисніть кнопку Виконати .

Рішення 2

У цьому прикладі ми будемо використовувати подію Worksheet_SelectionChange як тригер.

Ця подія буде автоматично запускати код кожного разу при виборі комірки (у певному діапазоні).

Запропонований код буде прокручуватися через всі клітинки з вибраного діапазону, і якщо клітинка знаходиться в шрифті "Wingdings", вона вставить прапорець.

Код

Щоб вставити цей код:
  • Відкрийте потрібний лист.
  • Клацніть правою кнопкою миші на вкладці аркуша> Переглянути код .
  • Скопіюйте та вставте наведений нижче код:

 Параметр Явне приватне робоче місце_Зміни вибору (ByVal Target As Range) 'Обмеження de la plage. Якщо Ви перетинаєте (З'єднання ([A2: A10], [D2: D10]), Цільове значення, Ніщо, то Вийдіть з підсистеми A2: A10; D2: D10 Якщо Цільовий. Count = 1 Або Target.MergeCells Потім, якщо Target.Font.Name = "Wingdings" Тоді з цільової 'cellule "liée" .Value = Abs (.Range ("A1"). Значення - 1) .NumberFormat = "" " ""; General; "" o ""; @ "Application.EnableEvents = False .Range (" A1 "). Зміщення (, 1) .Виберіть Application.EnableEvents = True End З закінченням, якщо закінчиться, якщо закінчити Sub 

Щоб використати цей код:

  • Виберіть діапазон комірок.
  • Застосуйте шрифт Wingdings.
  • Клацніть будь-де на робочому аркуші, а потім на кожній з попередньо вибраних комірок.

Використання коду із захищеною робочою книгою / листом

 ActiveSheet.Protect "admin" 'admin = Вибрати пароль для користувача "Вставте свій код тут ActiveSheet.Unprotect" адміністратор " 

Якщо ваш аркуш захищений, вам потрібно скасувати захист коду. Цього можна досягти за допомогою наведеного нижче коду:

Попередня Стаття Наступна Стаття

Кращі Поради