В этой статье мы рассмотрим такой элемент управления в окне 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) нам понадобится кнопка, которая будет очищать список, и будет делать доступными все флажки.
Знаю, знаю, пример не столько практичен, сколько теоретичен….
В коде для формы нужно добавить следующие процедуры:
Private Sub CheckBox1_Change() If CheckBox1.Value = True Then ListBox1.AddItem CheckBox1.Caption CheckBox1.Enabled = False End If End Sub Private Sub CheckBox2_Change() If CheckBox2.Value = True Then ListBox1.AddItem CheckBox2.Caption CheckBox2.Enabled = False End If End Sub Private Sub CheckBox3_Change() If CheckBox3.Value = True Then ListBox1.AddItem CheckBox3.Caption CheckBox3.Enabled = False End If End Sub Private Sub CheckBox4_Change() If CheckBox4.Value = True Then ListBox1.AddItem CheckBox4.Caption CheckBox4.Enabled = False End If End Sub Private Sub CheckBox5_Change() If CheckBox5.Value = True Then ListBox1.AddItem CheckBox5.Caption CheckBox5.Enabled = False End If End Sub Private Sub CheckBox6_Change() If CheckBox6.Value = True Then ListBox1.AddItem CheckBox6.Caption CheckBox6.Enabled = False End If End Sub Private Sub CheckBox7_Change() If CheckBox7.Value = True Then ListBox1.AddItem CheckBox7.Caption CheckBox7.Enabled = False End If End Sub Private Sub CheckBox8_Change() If CheckBox8.Value = True Then ListBox1.AddItem CheckBox8.Caption CheckBox8.Enabled = False End If End Sub Private Sub CheckBox9_Change() If CheckBox9.Value = True Then ListBox1.AddItem CheckBox9.Caption CheckBox9.Enabled = False End If End Sub Private Sub CheckBox10_Change() If CheckBox10.Value = True Then ListBox1.AddItem CheckBox10.Caption CheckBox10.Enabled = False End If End Sub Private Sub CheckBox11_Change() If CheckBox11.Value = True Then ListBox1.AddItem CheckBox11.Caption CheckBox11.Enabled = False End If End Sub Private Sub CheckBox12_Change() If CheckBox12.Value = True Then ListBox1.AddItem CheckBox12.Caption CheckBox12.Enabled = False End If End Sub Private Sub 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.Clear End Sub |
Процедуры от 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.
где пример?