Класс 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

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

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.

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

  1. аноним

    где пример?

    Ответить