Чекбокс в excel - Экспресс обучение в IT
express.x24hr.com

Экспресс обучение в IT

7 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Чекбокс в excel

Флажок — элемент управления формы в EXCEL

Флажок возвращает ИСТИНА (если Флажок установлен) или ЛОЖЬ (если Флажок снят).

Для вставки элементов управления на лист необходимо отобразить вкладку Разработчик.

  • В MS EXCEL 2007 это можно сделать через меню Кнопка офис/ Параметры Excel/ Основные/ Показывать вкладку Разработчик на ленте .
  • В MS EXCEL 2010 это можно сделать так: Откройте вкладку Файл ; Нажмите кнопку Параметры ; Нажмите кнопку Настроить ленту ; Выберите команду Настройка ленты и в разделе Основные вкладки установите флажок Разработчик .

Теперь вставить элемент управления можно через меню: Разработчик/ Элементы управления/ Вставить .

Обратите внимание, что в этом меню можно также вставить Элементы ActiveX, которые расположены ниже интересующих нас Элементов управления формы. У обоих типов есть одни и те же элементы Кнопка, Список, Флажок и т.п. Разница между ними следующая: чтобы использовать Элементы ActiveX необходимо использовать VBA, а Элементы управления формы можно напрямую привязать к ячейке на листе.

Флажок ( Checkbox ) как, впрочем и все другие Элементы управления формы, возвращает только 1 числовое значение. Если Флажок установлен, то он возвращает ИСТИНА, если Флажок снят — то ЛОЖЬ. См. файл примера лист Флажок .

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

Вставка Флажка

Через меню Разработчик/ Элементы управления/ Вставить выберем левой клавишей мыши элемент Флажок.

После этого выпадающее меню закроется, а курсор вместо обычного толстого крестика

превратится в тонкий крестик.

Выберите место на листе куда нужно вставить Флажок и нажмите левую клавишу мыши. На месте курсора будет установлен левый верхний угол прямоугольника, в котором содержится Флажок и его надпись. Граница прямоугольника будет выделена.

Выделение Флажка

После вставки Флажка он становится выделенным (см. рисунок выше). Если кликнуть в любом другом месте листа, то Флажок перестанет быть выделенным. Чтобы снова его выделить нужно кликнуть его ПРАВОЙ клавишей мыши (клик ЛЕВОЙ клавиши устанавливает или снимает Флажок ). После клика правой кнопкой также появляется контекстное меню, чтобы его убрать можно нажать ESC или кликнуть левой клавишей по Флажку .

Перемещение Флажка и изменение его размеров

Если навести курсор на выделенный прямоугольник Флажка (курсор примет форму 4-х направленных в разные стороны стрелок, см. рисунок выше), затем нажать и удерживать левую кнопку мыши, то можно переместить Флажок. Удерживая клавишу ALT можно выровнять Флажок по границам ячеек. Выделенный Флажок также можно перемещать стрелками с клавиатуры.

Если навести курсор на углы прямоугольника или на маленькие квадратики на границе, то можно изменить его размер.

Связываем Флажок с ячейкой

Как было сказано выше, все Элементы управления формы возвращают значение. Это значение помещается в ячейку определенную пользователем. Чтобы связать Элемент управления с ячейкой, кликните на него ПРАВОЙ клавишей мыши, в появившемся контекстном меню выберите Формат объекта.

Появится диалоговое окно, выберите вкладку Элемент управления (если такая вкладка отсутствует, то Вы вставили Элемент ActiveX, а не Элемент управления формы, об этом см. выше).

В поле Связь с ячейкой нужно ввести ссылку на ячейку. Свяжем наш Флажок с ячейкой А1 .

Нажмите ОК. Убедитесь, что Флажок не выделен. Пощелкайте левой клавишей мыши по Флажку . В ячейке А1 значение будет меняться с ИСТИНА на ЛОЖЬ и наоборот.

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

Чтобы изменить ячейку, с которой связан Элемент управления, достаточно перетащить эту ячейку, взяв за ее границу, в нужное место.

Одну ячейку можно связать с несколькими элементами управления, но имеет ли это смысл? Решать Вам.

Изменяем внешний вид Флажка

Чтобы изменить внешний вид Флажка, кликните на него ПРАВОЙ клавишей мыши, в появившемся контекстном меню выберите Формат объекта. Появится диалоговое окно, выберите вкладку Цвета и линии.

После несложной настройки можно сотворить вот такое чудо с Вашим Флажком .

Шрифт изменить не удастся (((.

Имя Элемента управления

У каждого Элемента управления есть имя. Чтобы его узнать нужно выделить Флажок, в Поле имя будет отображено его имя.

Отметим, что Имя Флажка и надпись на нем — совершенно 2 разные вещи, хотя они могут и совпадать.

Чтобы изменить имя Флажка — в Поле имя введите новое имя и нажмите клавишу ENTER . Также имя можно изменить в Области выделения ( Главная / Редактирование/ Найти и выделить/ Область выделения ).

Зачем нам знать его имя? Если Вы не планируете управлять Флажком из программы VBA, то имя может потребоваться только для настройки его отображения на листе. Об этом читайте ниже.

Прячем Флажок на листе

Включите Область выделения ( Главная / Редактирование/ Найти и выделить )

В Области выделения можно управлять отображением не только Элементов управления, но и других объектов на листе, например рисунков.

Нажмите на изображение глаза напротив имени объекта и объект исчезнет/ появится.

Использование Флажка

Так Флажок может придавать значение ячейки только ИСТИНА или ЛОЖЬ, то нам потребуются формулы, чтобы разнообразить применение Флажка .

Например, можно отображать разные надписи в зависимости от того установлен ли Флажок или нет.

=ЕСЛИ(A1;»Флажок установлен»;»Флажок снят»)

Также можно производить различные вычисления. Например, выводить сумму одного из 2-х диапазонов Е4:Е6 или F4:F6

Часто Флажок применяют для включения/ выключения заливки ячейки. Для этого нам придется использовать Условное форматирование .

Для ячеек В1:С1 создадим простое правило форматирования.

Теперь, когда Флажок установлен, эти ячейки будут выделены красным.

Если Флажок снят, то и заливка не отображается.

Добавление флажков и переключателей (элементы управления формы)

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

Чтобы добавить флажок или переключатель, вам понадобится вкладка Разработчик на ленте.

Примечания: Чтобы добавить вкладку «Разработчик», выполните следующие действия:

В Excel 2010 и последующих версиях: выберите Файл > Параметры > Настроить ленту, установите флажок Разработчик, а затем нажмите кнопку ОК.

В Excel 2007: нажмите кнопку Microsoft Office и выберите Параметры Excel > Популярные > Показывать вкладку «Разработчик» на ленте.

Чтобы добавить флажок, откройте вкладку Разработчик, нажмите кнопку Вставить и в разделе Элементы управления формы щелкните .

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

Читать еще:  Нумерованный список в excel

Выберите ячейку, в которой нужно добавить флажок или переключатель.

Совет: За один раз можно добавить только один флажок или переключатель. Чтобы ускорить работу, выделите созданный элемент управления и выберите команды Копировать > Вставить.

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

Совет: Если виден не весь текст, щелкните и перетаскивайте один из маркеров, пока не будет виден весь текст. Размер элемента управления и его расстояние от текста изменить нельзя.

Форматирование элемента управления

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

Примечание: Размер переключателя внутри элемента управления и его расстояние от текста невозможно изменить.

Чтобы отформатировать элемент управления, щелкните его правой кнопкой мыши и выберите пункт Формат элемента управления.

В диалоговом окне Формат элемента управления на вкладке Элемент управления можно изменить следующие параметры:

установлен: отображает выбранный переключатель.

снят: отображает невыбранный переключатель.

В поле Связь с ячейкой введите ссылку на ячейку, в которой содержится текущее состояние переключателя.

Связанная ячейка возвращает номер выбранного переключателя в группе параметров. Для всех параметров в группе нужно использовать одну связанную ячейку. Для первого переключателя возвращается 1, для второго — 2 и т. д. Если на одном листе есть несколько групп переключателей, используйте для них отдельные связанные ячейки.

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

Например, на форме сотрудника в группе Тип занятости есть два переключателя ( Полная и Частичная), связанные с ячейкой C1. Когда пользователь выбирает один из них, формула в ячейке D1 использует значение «Полная», если установлен первый переключатель, или «Частичная», если выбран второй переключатель.

Если нужно оценить более двух параметров в одной группе, для этого можно использовать функции ВЫБОР или ПРОСМОТР.

Нажмите кнопку ОК.

Удаление элемента управления

Щелкните элемент управления правой кнопкой мыши и нажмите клавишу DELETE.

В настоящее время элементы управления «флажок» нельзя использовать в Excel в Интернете. Если вы работаете в Excel в Интернете и открыли книгу с флажками или другими элементами управления (объектами), вы не сможете редактировать книгу, не удаляя эти элементы управления.

Важно: Если вы видите сообщение «изменить в браузере?» или «неподдерживаемые возможности», а затем снова хотите изменить книгу в браузере, все объекты, такие как флажки, будут потеряны сразу. Если это случится и вы хотите, чтобы эти объекты были возвращены, используйте предыдущие версии для восстановления более ранней версии.

Если у вас есть классическое приложение Excel, нажмите кнопку Открыть в Excel и добавьте флажки илипереключатель.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

См. также

Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

Скрытие отмеченных строк (с использованием элементов управления Checkbox, или без них)

В прикреплённом файле — 3 варианта реализации:

  • с использованием CheckBox с панели инструментов «Элементы управления»
  • с использованием CheckBox с панели инструментов «Формы»
  • без использования Checkbox — галочки (отметки) ставятся макросом
    (с использованием шрифта Marlett)

Для каждого из вариантов использованы свои макросы, скрывающие и отображающие строки
(в первых двух вариантах требуется ещё и скрывать сами чекбоксы)

В третьем варианте для скрытия строк применён автофильтр.

ВложениеРазмерЗагрузкиПоследняя загрузка
Checkboxes.xls61.5 КБ2391 год 26 недель назад
  • 28836 просмотров

Комментарии

Подскажите, пожалуйста, возможно ли в LinkedCell вместо «ИСТИНА» написать «1» (когда флажок установлен), вместо «ЛОЖЬ» — «2» (флажок снят)?

Здравствуйте, Виктор.
Можно ускорить, если скрывать сразу все строки (одновременно)
Пример кода можно посмотреть здесь:
http://excelvba.ru/code/ConditionalRowsDeleting
возможно, надо будет переделать с проверки значений ячеек на проверку чекбоксов

Здравствуйте! Пробовал разобраться во втором варианте (вкладка «нормальные чекбоксы»). В случае когда большое количество строк с чекбоксами (допустим 150 строк, а не 5 как в примере), макрос для скрытия выполняется очень долго. Тажке, скорость его выполнения почему-то зависит от наличия значений на других листах (чем больше значений на других листах, тем он медленнее). Что можно сделать, чтобы скорость макроса была выше при большом количестве скрываемых строк?

Ну так понятно, что должны быть в книге эти объекты, — и галочка с именем CheckBox1, и подключение с именем «http://excelvba.ru»
А если их нет, — конечно ошибку будет макрос выдавать
Если сами не разберетесь, — можем сделать под заказ

Игорь так же Ошибка «Run-time error 424 object required на строке:

CheckBox1.Enabled = False: ActiveWorkbook.Connections(«http://excelvba.ru»).Refresh

Может необходимо создание объекта на запрос? ,но я могу быть ошибаться.

Как-то так можно сделать:

Помогите пожалуйста с кодом, выдает ошибку 424 ,((
Задача при проставленной галочке в чекбоксе макрос дает запрос, если нет галочки переходим на следующий запрос.

Sub CheckBox()
If CheckBox1.Value = True Then
ActiveWorkbook.Connections(«http://excelvba.ru»).Refresh
CheckBox1.Enabled = False
End If
End Sub
Sub CheckBox()
If CheckBox2.Value = True Then
ActiveWorkbook.Connections(«http://abvlecxe.ru»).Refresh
CheckBox1.Enabled = False
End If
End Sub

Если бы так просто. Это поле неактивно (серое) в свойствах чекбокса. Поэтому при сортировке перемещаются только ячейки, чекбоксы на месте стоят.
Как его «пометить», желательно программно — хз.
Обходной вариант — перерисовывать чекбоксы после сортировки, но как отловить эту самую сортировку.

Здравствуйте, Андрей
Выделите все чекбоксы, и в свойствах поменяйте режим привязки к ячейкам (опция «перемещать и изменять вместе с ячейками»)

Подскажите пожалуйста, как привязать чекбокс к ячейке? Проблема в следующем: на листе есть автофильтр один из столбцов которого реализован в виде чекбоксов. все прекрасно работает при фильтрации строк, но если применить сортировку то привязка чекбокса «слетает». Например: Автофильтр 50 строк столбец «А» — чекбоксы связанные (.LinkedCell=»$A$2) с ячейками в которые вписаны. После применения сортировки в автофильтре чекбоксы становятся связаны с произвольной ячейкой столбца «А». (чекбокс изначально нарисованный и связанный с ячейкой «А2» после сортировки становится связан с ячейкой «А9», но рисуется по прежнему в «А2»)

Юля, а какое отношение ваш вопрос имеет к теме статьи?

Макрос для вашего случая (делает выделенные ячейки полужирными)

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

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

В моём же примере всё работает — возьмите код оттуда.
И обратите внимание — чекбоксы (галочки) бывают двух видов, используйте тот код, который идёт для используемых вами чекбоксов.

Если сами не разберетесь — оформляйте заказ, прикрепляйте файл, объясняйте, как что должно работать, — тогда сам все сделаю (не бесплатно)

Доброй ночи!
смотрю и никак не пойму с чекбоксами. имеется ряд столбцов (согласно вашего примера делаем две кнопки — скрыть и отобразить) с яцейки столбцов ставим чек боксы. далее не пойму что и где писать что б работала кнопка спрятать те что без галочки. Помогите пожалуйста если не затруднит (офис 2007 винда 7/64)
С уважением, Сергей!

Вообще-то данные из Access у меня загружаются именно при активации листа, а потом таблицы динамически обновляются и изменяются при переключении по гипперссылкам (своего рода меню такое), при этом один и тот же лист может быть активным, поэтому галочки проставляются как при активации листа, так и при прохождении по пунктам моего меню. Судя по всему ОДИН раз галочки проставить не получится

Код можно писать куда угодно — в любой модуль. Вызывать его можно тоже из любой процедуры.

Вот вариант кода, который не будет удалять элементы ActiveX, и не будет ошибочно ставить галочки в ячейку a1

PS: Зачем каждый раз при активации листа заново проставлять все галочки?
ОДИН РАЗ запустите код (после импорта данных из access) — и больше не надо.

Простите, возникли вопросы, куда писать этот код? Где вызывать процедуры? Почему у меня в книге удалились элементы ActiveX (в основном Data Picker 6.0)? Почему чекбокс стоит в ячейке A1 на всех листах?
P.S. Код сначала вставила в модуль книги, потом перенесла его в обычный, который отвечает за интерфейс и вызвала процедуру в WorkSheet_Activаte

Спасибо Вам, Игорь, огромное. Смотрю на код и понимаю, что сама бы я до такого не додумалась. Вернее гипотетически я понимаю что нужно сделать, а как на VBA записать еще толком не знаю. Еще раз СПАСИБО!

Сделал я вам макрос для замены логических значений на галочки,
без изменения значений в ячейках.
Работает для всех листов активной книги.

Результат (слева — что было, справа — что стало)

Да для простого отображения, не оч. красиво смотрится ИСТИНА или ЛОЖЬ в ячейках, гораздо красивее галочки (а вот какие лучше использовать, подскажите пожалуйста Вы: мне больше понравились те, которые шрифтом делаются, но так, Вы говорите, нужно менять значение ячеек). Так как таблица заполняется данными из БД Access, то ничего естественно менять в данных не нужно, просто показать, причем макрос (т.е. процедура) наверное должен быть глобальным, так как таблицы будут все из БД и в некоторых из них будут логические поля(столбцы). Вообщем при активации листа, после выполнения

А какие «галочки» вас интересуют?
Который выполнены при помощи чекбоксов, или буквой «a» шрифтом Marlett?
Сделать-то можно, но это будет макрос, заменяющий в таблице одни значения другими
Обратную операцию (возврат логических значений в ячейки) тоже надо будет делать, при активации любого другого листа?

Создаваемые «галочки» должны менять значение ячеек?
Можно написать макрос, который всем логическим ячейкам назначит белый цвет шрифта, и поверх каждой такой ячейки нарисует чекбокс, связанный с этой ячейкой.
Но — при большом объёме данных это будет заметно тормозить (тысячи графических объектов на листе заметно снизят скорость работы с данными)

Для чего это надо сделать? (для удобства работы, для вывода на печать, ещё что-то?)
Может, есть какой-то более простой способ.

Здравствуйте, Игорь!
У меня такой вопрос, а если необходимо отображать галочки не по щелчку мышки, а сразу при активации листа, как это сделать программно?
То есть имеем ListObject, и в ней определенные столбцы логического типа. При создании и отображении в ячейках пишутся значения true и false соответственно. Можно ли сделать так, чтобы отображались ваши «галочки»? Грубо говоря, нужно обойти все ячейки в таблице (независимо от количества строк и столбцов) и превратить значения true в «галочки»

Здравствуйте, Елена.
Какую ещё мою процедуру, в какой исходный код, зачем?
Я лишь показал вам пример кода VBA для работы с «умной таблицей» (списком Excel 2003).
Этот код не создаёт таблицу, а работает с ней.

Вам на форум по Excel лучше обратиться, — там вам подскажут (я с СУБД пока не дружу).
Да и вопрос ваш не имеет никакого отношения к теме статьи.

А разве она не соэдается динамически? Если нет то как ее создать на указанном или активном листе? Я так поняла, что Вашу процедуру нужно записать в исходном коде нужного мне листа и вызвать ее в Worksheeet_Activate. Мне собственно нужночтобы при выборе листа создавалась таблица с данными из базы данных Access по конкретному запросу. Поскольку аналогичным образом у меня будут открываться почти все листы (динамически и программным кодом VBA создаваться таблицы, элементы управления: текстовые поля, выпадающие списки и др.), то малюсенький пример использования мне бы помог. Если сможете, то помогите, пожалуйста. Связь с БД я использую через ADO (это потому что возможно буду переходить на SQL Server) И еще вопрос по существу, посоветуйте, пожалуйста, как профессионал, какую СУБД лучше использовать вместе с Excel и с помощью чего к ней подключаться. Я много в инете об этом читала, но ответов еа свой вопрос так и нре рнашла, так как в этом вопросе я не специалист. Я понимаю, что все зависит от конкретной задачи. У меня обычная реляционная БД с претензией на объектно-реляционную БД (отсюда и возможный переход на SQL Server)ю Задача — учет торговли и склада (остатки, движение товара и денег) — специфический, поэтому и не использую готовые программы (такие как 1С и т.п.), а пишу сама. Выбор пал на Excel, так как и Вы думаю, что нерешаемых задач в Excele нет (если конечно знать VBA, хотя бы % на 20 от Вашего). Не посчитайте за наглость или за грубую лесть мои высказывания. С уважением, Елена

Если строка Set LO = ActiveSheet.ListObjects(1)
выдаёт такую ошибку, значит, на активном листе Excel нет ни одной «умной таблицы».

Здравствуйте, Игорь.
Похоже, что «умная таблица» оказалась умнее меня :(. Попробовала поюзать ваш код-пример. В строке
Set LO = ActiveSheet.ListObjects(1)
пишет ошибку run-time error ‘9’ Subscript out of range
Что не так?
У меня Office 2010 Windows7

Ой, спасибо, Вам, Игорь, большое за быстрый ответ. Дальше я с этой таблицей сама разбираться буду. Ух, я ее. А то в последнее время только она меня. (Шутка)
Извините за оффтоп и еще раз огромное спасибо

Вот вам пример кода для работы с «умной таблицей»:
(в Excel 2003 эта умная таблица носила название «список»)

Подробнее — во встроенной справке по объекту ListObject

Игорь, огромное Вам СПАСИБО за помощь. Дело в том, что я долгое время не могла решить проблему с CheckBox-ами в ячейках. Сама пробовала, инет перешерстила вдоль и поперек, даже на киберфоруме помощи просила. Ответ один — вставить чекбоксы в ячейку нельзя. А если и можно, то там к координате top привязка. А у меня «умная» или не очень 🙂 динамическая таблица, которая заполняеся из БД Access динамически и мне нужно было выделять определенные строки и обрабатывать их прямо в коде. Вставлять в ячейку контролы и привязывать их руками нереально (так как нужно это в зависимости от количества строк в таблице БД динамически, а это только кодом) Вообщем хочу поблагодарить вас за идею ставить галочки в ячейке шрифтом — идеальный вариант для динамических таблиц. Только вот подсказали бы Вы мне, начинающей в области VBA, как работать с «умной таблицей» как с объектом VBA в коде, то бишь программно. Я просто не могу найти нигде информации: ищу то ли плохо, то ли все не там.

Спасибо, попробуем прикрутить

Да тут нужен гораздо более простой макрос.
Вчера такой делал — код скрывает столбце при двойном щелчке на ячейке:
programmersforum.ru/showpost.php?p=860687&postcount=2

Благодарю за быстрый ответ. Дело в том что имеется таблица с большим кол-вом столбцов, которые необходимо скрывать перед печатью. Было бы удобно чтобы макрос скрывал столбцы если над ними поставить например галочку или определенный набор символов. Если на основе данного макроса это выполнить невозможно, будем дальше шерстить инет.

Смотря какой из трех вариантов вас интересует.
Автофильтр, к примеру, для скрытия столбцов не подойдёт.

Надо переделывать код — а что именно вам надо, я не знаю.
Обратитесь на форумы по Excel, прикрепите пример своего файла, — и вам обязательно помогут изменить код под ваши нужды.

Отличная вещь. А подскажите как сделать чтобы вместо строк скрывались столбцы?

Класс CheckBox — работа с флажками VBA

В этой статье мы рассмотрим такой элемент управления в окне ToolBox, как Флажок, за работу с ним отвечает класс VBA CheckBox. Флажки довольно часто используются на формах, их часто называют “птичками” или “галочками”. Сами по себе объекты vba класса CheckBox являются независимыми друг от друга, и позволяют определить одно из двух состояний: галочка установлена, или галочка снята.

Флажки удобны при составлении опросов, например, из десяти цветов нужно отметить те, которые больше всего нравятся. Собственно, в этой статье мы и попытаемся сделать своеобразный опрос, но пока, давайте рассмотрим основные свойства класса CheckBox:

Name – ну, как всегда, имя объекта

Caption – определяет надпись, которая будет находится возле галочки справа.

TripleState – свойство позволяет определить третье состояние флажка. Как упоминалось выше, компонент vba CheckBox может принимать два значения: галочка установлена (true), галочка снята (false), но можно задать и третье состояние (Null) – в этом случае объект будет серого цвета и будет недоступен. Если это свойство содержит значение false – будут поддерживаться только два состояния, если true – все три.

Value – данное свойство позволяет получить состояние выбора (true, false или Null).

Событие Change класса CheckBox происходит при изменении состояния флажка.

Скажу честно, цель статьи – показать простой пример использования Флажков, поэтому я особо не вникал во все премудрости данного компонента.

И так, цель задания: добавить в проект форму, на ней разместить 12 флажков, разделенных на 4 группы по 3 штуки, Например,

Ну, думаю, вы суть поняли: размещаете надпись, а под ней в столбик флажки. Справа я добавил компонент ListBox – как только мы будем ставить галочку для vba CheckBox, элемент сразу будет добавляться в список, плюс, элемент управлении Флажок сразу будет становится недоступным после выбора (свойство Enabled примет значение False). Еще на форме (UserForm) нам понадобится кнопка, которая будет очищать список, и будет делать доступными все флажки.

Знаю, знаю, пример не столько практичен, сколько теоретичен….

В коде для формы нужно добавить следующие процедуры:

Процедуры от CheckBox1_Change до CheckBox12_Change носят практически один и тот же характер – идет обработка события Change. Если состояние флажка ровно true (вы поставили птичку), то в список ListBox1 с помощью метода AddItem добавляется значение, хранимое в свойстве Caption (надпись рядом с птичкой). Далее происходит присваивание значения False свойству Enabled – делаем объект CheckBox недоступным.

Процедура CommandButton1_Click отвечает за обработку клика по кнопке. Видим, что для каждого флажка свойство Enabled принимает значение True, то есть, он становится доступным. Метод Cleare – полностью очищает список ListBox1.

И так, в этой статье мы кратко рассмотрели работу с классом CheckBox (Флажок) vba языка, да, я рассмотрел довольно простой пример использования, но… не все сразу.

Кстати, пример показанный в статье можно использовать и в Exel и в Word. Сам расчет идет на то, что бы описать базовую информацию по языку VBA, а уже потом переходить к чему-то более сложному. Так, как только я закончу с элементами управления, я перейду к описанию синтаксиса языка VBA, который практически идентичен языку VBScript, но код VBScript может выполняться самостоятельно в теле отдельного файла (сценариях), а VBA – работает в теле документа Microsoft.

Спасибо за внимание. Автор блога Владимир Баталий

Ссылка на основную публикацию