Класс OptionButton — работа с переключателями VBA

Класс OptionButton — работа с переключателями VBA Макросы на VBA

В этой статье мы рассмотрим такой элемент управления как OptionButton – Переключатель. Полагаю, многим приходилось видеть форму, на которой находятся несколько надписей и возле каждой надписи маленькая точка. Пользователь может выбрать только один элемент из списка. Компонент OptionButton в vba также называется RadioButton – по аналогии с радио, где можно выбрать одновременно только одну радиостанцию.

Если вы расположите на форме несколько переключателей vba OptionButton, то они будут между собой связаны, то есть вы сможете нажать одновременно только на один. Что бы создать отдельную группу объектов OptionButton, их нужно поместить в отдельную рамку или на отдельную вкладку.

Основные свойства для переключателя следующие:

Name – имя объекта, оно назначается автоматически в стиле: OptionButton1, OptionButton2, … , OptionButtonN. Но вы можете переименовать объект так, как вам подходит.

Caption – надпись, которая будет отображаться рядом с переключателем, при добавлении на форму компонента OptionButton в vba, свойство caption автоматически принимает такое же значение как и свойство Name.

Enabled – позволяет сделать активным и доступным (значение true) объект, или наоборот, сделать объект неактивным и недоступным (значение false).

Value – содержит логическое значение: true – элемент управления включен (вы нажали на переключатель) или false – элемент управления выключен.

Visible – определяет видимость объект, принимает логическое true – отображать или false – не отображать компонент.

Как и для большинства управляющих компонентов, для OptionButton главным событием vba является Change – событие возникает при включении/выключении радио-кнопки.

Хорошо, теперь давайте приступим к практике. Добавим в проект новую форму (я ее назвал OBForm) и новый модуль (OBModule), за добавление отвечает меню Insert, пункты UserForm и Module.

В окне свойств для формы (UserForm) установите следующие значения:

  • Caption – работа с компонентом OptionButton
  • Width – 320
  • Height – 134

Далее надо добавить на поверхность формы четыре переключателя, пусть они будут в одном столбике, справа от них добавьте один под другим два текстовых поля TextBox (соответственно TestBox1 и TextBox2), а под ними одну простую кнопку (CommandButton). Как все должно выглядеть можете посмотреть на рисунке.

vba OptionButton

Как и прежде, в редакторе кода для модуля следует прописать следующую процедуру:

Sub OBModule()
    OBForm.Show
End Sub

Тут мы просто указываем, что при запуске макроса должна отобразиться форма, Show — показать.

Хорошо, теперь немного о логике работы: возле каждого переключателя прописано имя элемента, при выборе заданного объекта OptionButton в vba (или RadioButton), в первом текстовом поле (TextBox1) должно отобразиться описание для выбранного элемента управления. При нажатии на кнопку во втором текстовом поле (TextBox2) должно отобразиться значение свойства Caption выбранного объекта OptionButton.

Хорошо, теперь пропишем в окне редактора кода для формы следующие процедуры:

Private Sub CommandButton1_Click()
    Dim ctrl As Control
    For Each ctrl In OBForm.Controls
        If ctrl.Value = True Then
            TextBox2.Text = ctrl.Caption
        End If
    Next
End Sub
 
Private Sub OptionButton1_Change()
    TextBox1.Text = ""
    TextBox1.Text = "CommandButton - работа с кнопками"
End Sub
 
Private Sub OptionButton2_Change()
    TextBox1.Text = ""
    TextBox1.Text = "CheckBox - создание флажков"
End Sub
 
Private Sub OptionButton3_Change()
    TextBox1.Text = ""
    TextBox1.Text = "ListBox - формирование списка с данными"
End Sub
 
Private Sub OptionButton4_Change()
    TextBox1.Text = ""
    TextBox1.Text = "TextBox - добавление на форму текстового поля"
End Sub

Теперь проанализируем код:

CommandButton1_Click – тут происходит обработка клика по кнопке. В цикле for … each происходит перебор коллекции всех объектов OptionButton и происходит проверка значения свойства Value, если оно ровно true – значит, элемент выбран. Во второе текстовое поле будет записываться значение свойства Caption для выбранного объекта.

Процедуры от OptionButton1_Change до OptionButton4_Change обрабатывают событие Change. Как только мы выберем переключатель OptionButton в VBA, в первое текстовое поле запишется текстовая строка. Строка TextBox1.Text = «» фактически является лишней, так как содержимое текстового поля автоматически затирается при присвоении свойству Text нового текста.

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