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

Класс CheckBox — работа с флажками VBA Макросы на 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 штуки, Например,

  • Телефон: Nokia, Samsung, Siemens
  • Девушка: рыжая, светлая, темная (Ха-ха!!!!)
  • Ноутбук: Asus, Acer, Lenovo
  • Транспорт: велосипед, автомобиль, самокат

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

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

excel vba checkbox

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

PrivateSub CheckBox1_Change()    If CheckBox1.Value = TrueThen        ListBox1.AddItem CheckBox1.Caption        CheckBox1.Enabled = False    EndIfEndSub PrivateSub CheckBox2_Change()    If CheckBox2.Value = TrueThen        ListBox1.AddItem CheckBox2.Caption        CheckBox2.Enabled = False    EndIfEndSub PrivateSub CheckBox3_Change()    If CheckBox3.Value = TrueThen        ListBox1.AddItem CheckBox3.Caption        CheckBox3.Enabled = False    EndIfEndSub PrivateSub CheckBox4_Change()    If CheckBox4.Value = TrueThen        ListBox1.AddItem CheckBox4.Caption        CheckBox4.Enabled = False    EndIfEndSub PrivateSub CheckBox5_Change()    If CheckBox5.Value = TrueThen        ListBox1.AddItem CheckBox5.Caption        CheckBox5.Enabled = False    EndIfEndSub PrivateSub CheckBox6_Change()    If CheckBox6.Value = TrueThen        ListBox1.AddItem CheckBox6.Caption        CheckBox6.Enabled = False    EndIfEndSubPrivateSub CheckBox7_Change()    If CheckBox7.Value = TrueThen        ListBox1.AddItem CheckBox7.Caption        CheckBox7.Enabled = False    EndIfEndSub PrivateSub CheckBox8_Change()    If CheckBox8.Value = TrueThen        ListBox1.AddItem CheckBox8.Caption        CheckBox8.Enabled = False    EndIfEndSub PrivateSub CheckBox9_Change()    If CheckBox9.Value = TrueThen        ListBox1.AddItem CheckBox9.Caption        CheckBox9.Enabled = False    EndIfEndSub PrivateSub CheckBox10_Change()    If CheckBox10.Value = TrueThen        ListBox1.AddItem CheckBox10.Caption        CheckBox10.Enabled = False    EndIfEndSub PrivateSub CheckBox11_Change()    If CheckBox11.Value = TrueThen        ListBox1.AddItem CheckBox11.Caption        CheckBox11.Enabled = False    EndIfEndSub PrivateSub CheckBox12_Change()    If CheckBox12.Value = TrueThen        ListBox1.AddItem CheckBox12.Caption        CheckBox12.Enabled = False    EndIfEndSub PrivateSub CommandButton1_Click()    CheckBox1.Enabled = True    CheckBox2.Enabled = True    CheckBox3.Enabled = True    CheckBox4.Enabled = True    CheckBox5.Enabled = True    CheckBox6.Enabled = True    CheckBox7.Enabled = True    CheckBox8.Enabled = True    CheckBox9.Enabled = True    CheckBox10.Enabled = True    CheckBox11.Enabled = True    CheckBox12.Enabled = True    ListBox1.ClearEndSub

Процедуры от 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.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий