Optionbutton vba excel примеры

Элемент управления пользовательской формы OptionButton для выбора одной опции из группы и передачи результата в VBA Excel. Свойства переключателя, примеры.

UserForm.OptionButton – это элемент управления пользовательской формы, который используется в группе одноименных элементов и предназначен для передачи в код VBA информации о его выборе или невыборе пользователем: False – переключатель не выбран, True – переключатель выбран.

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

В VBA Excel элемент управления OptionButton состоит из белого кружка с черной точкой (переключатель выбран) или без нее (переключатель не выбран) и надписи. Надпись расположена справа и реагирует на нажатие мышью так же, как и белый кружок.

В отличие от элемента управления CheckBox, только один OptionButton из группы переключателей может иметь значение True. Для разделения разных групп переключателей друг от друга используются элементы управления Frame (рамки). Все переключатели вне рамок являются одной группой.

Элемент управления OptionButton в группе одноименных элементов

Так же, как и элемент управления CheckBox, OptionButton принимает третье состояние при присвоении ему в коде VBA Excel значения Null. Переключатель отображается с серым кружком и серой точкой.

Элементs управления OptionButton со значением Null

Свойства элемента Переключатель

Свойство Описание
AutoSize Автоподбор размера переключателя. True – размер автоматически подстраивается под длину набираемой строки. False – размер элемента управления определяется свойствами Width и Height.
ControlSource Ссылка на источник данных для свойства Value.
ControlTipText Текст всплывающей подсказки при наведении курсора на OptionButton.
Enabled Возможность взаимодействия пользователя с элементом управления. True – взаимодействие включено, False – отключено (цвет переключателя становится серым).
Font Шрифт, начертание и размер текста надписи.
Height Высота элемента управления.
Left Расстояние от левого края внутренней границы пользовательской формы до левого края элемента управления.
Picture Добавление изображения вместо текста надписи или дополнительно к нему.
PicturePosition Выравнивание изображения и текста в поле надписи.
TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой нажатием клавиш «Tab», «Enter». Отсчет начинается с 0.
TextAlign* Выравнивание текста надписи: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края элемента управления.
Value Значение переключателя: True – включен, False – выключен, Null – серый кружок с серой точкой.
Visible Видимость элемента OptionButton. True – элемент отображается на пользовательской форме, False – скрыт.
Width Ширина элемента управления.
WordWrap Перенос текста надписи на новую строку при достижении границы ее поля. True – перенос включен, False – перенос выключен.

* При загруженной в поле надписи картинке свойство TextAlign не работает, следует использовать свойство PicturePosition.

Свойство по умолчанию для элемента OptionButton – Value, основное событие – Click.

В таблице перечислены только основные, часто используемые свойства переключателя. Все доступные свойства отображены в окне Properties элемента управления OptionButton.

Примеры кода VBA с OptionButton

Пример 1
Отображение элементов управления OptionButton на пользовательской форме с параметрами, заданными в коде VBA Excel:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

Private Sub UserForm_Initialize()

  With Me

    .Width = 160

    .Height = 110

    .Caption = «Пьедестал почета»

  End With

  With OptionButton1

    .Caption = «1 место»

    .Value = True

    .Width = 60

    .Height = 18

    .Left = 60

    .Top = 18

    .Font.Size = 10

  End With

  With OptionButton2

    .Caption = «2 место»

    .Value = False

    .Width = 60

    .Height = 18

    .Left = 12

    .Top = 36

    .Font.Size = 10

  End With

  With OptionButton3

    .Caption = «3 место»

    .Value = False

    .Width = 60

    .Height = 18

    .Left = 90

    .Top = 48

    .Font.Size = 10

  End With

End Sub

Разместите на пользовательской форме три переключателя с именами OptionButton1, OptionButton2, OptionButton3 и добавьте в модуль формы представленный выше код. Запуск этого кода отобразит следующую форму:

Элементы управления OptionButton, размещенные на форме в виде пьедестала почета

Пример 2
Управление доступностью двух групп переключателей, заключенных в рамки, с помощью двух управляющих элементов OptionButton, расположенных непосредственно на пользовательской форме.

Для этого создадим следующий проект формы в редакторе VBA Excel («Рыбы» и «Птицы» большими буквами – это значения свойств Caption рамок Frame1 и Frame2):

В модуль формы вставляем следующий код:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

‘Присвоение исходных значений

‘свойствам элементов управления

‘перед отображением формы

Private Sub UserForm_Initialize()

  OptionButton1.Value = False

  OptionButton2.Value = False

  OptionButton3.Enabled = False

  OptionButton4.Enabled = False

  OptionButton5.Enabled = False

  OptionButton6.Enabled = False

  OptionButton7.Enabled = False

  OptionButton8.Enabled = False

  Frame1.Enabled = False

  Frame2.Enabled = False

End Sub

‘Смена значений свойств переключателей,

‘расположенных в рамке Frame1,

‘при смене значения OptionButton1.Value

Private Sub OptionButton1_Change()

  If OptionButton1.Value Then

    Frame1.Enabled = True

    With OptionButton3

      .Value = False

      .Enabled = True

    End With

    With OptionButton4

      .Value = False

      .Enabled = True

    End With

    With OptionButton5

      .Value = False

      .Enabled = True

    End With

  Else

    Frame1.Enabled = False

    With OptionButton3

      .Value = False

      .Enabled = False

    End With

    With OptionButton4

      .Value = False

      .Enabled = False

    End With

    With OptionButton5

      .Value = False

      .Enabled = False

    End With

  End If

End Sub

‘Смена значений свойств переключателей,

‘расположенных в рамке Frame2,

‘при смене значения OptionButton2.Value

Private Sub OptionButton2_Change()

  If OptionButton2.Value Then

    Frame2.Enabled = True

    With OptionButton6

      .Value = False

      .Enabled = True

    End With

    With OptionButton7

      .Value = False

      .Enabled = True

    End With

    With OptionButton8

      .Value = False

      .Enabled = True

    End With

  Else

    Frame2.Enabled = False

    With OptionButton6

      .Value = False

      .Enabled = False

    End With

    With OptionButton7

      .Value = False

      .Enabled = False

    End With

    With OptionButton8

      .Value = False

      .Enabled = False

    End With

  End If

End Sub

При запуске пользовательской формы или процедуры UserForm_Initialize() откроется форма с неактивными переключателями в рамках Frame1 и Frame2. Нажатие мышью на элементы управления OptionButton с надписями «Рыбы» и «Птицы» будет активировать группу переключателей в одноименных рамках.

В этой статье мы рассмотрим такой элемент управления как 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 нового текста.

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

Переключатель OptionButton подобен флажку CheckBox, так как он тоже позволяет отображать и выбирать значение типа True/False или да/нет. Обычно переключатель имеет вид маленького кружка, внутри которого отображается (если переключатель выбран) или не отображается (если переключатель не выбран) черная точка. Щелкая на переключателе, пользователь выбирает его или отменяет его выбор. Отличие переключателя OptionButton от флажка CheckBox состоит в том, что из группы может быть выбран только один переключатель (тогда как флажков, принадлежащих одной группе, допускается выбрать сразу несколько).

рис . 1.1 Элемент управления OptionButton на панели ToolBox

рис. 2.2 Элемент управления OptionButton на форме

рис. 2.3 Пример элемента управления OptionButton на форме

Чтобы создать группу переключателей, поместите их на элементе управления Frame. Обратите внимание, что вначале необходимо добавить в окно формы панель Frame, а затем разместить на ней переключатели OptionButton. Чтобы сделать переключатель частью группы, его сразу же следует поместить на панель Frame. Таким образом перетащить уже созданный переключатель из окна формы на панель вы не сможете.
Еще один способ создания группы переключателей состоит в использовании свойства GroupName. Все элементы управления OptionButton, свойство GroupName которых имеет одинаковое значение, считаются частью одной группы. Выбор одного такого переключателя исключает возможность выбора других, даже если они не расположены на одной панели.
Присвоение свойству Value переключателя значения True сопровождается автоматическим присвоением значения False этому же свойству других переключателей, относящихся к данной группе. Чтобы определить, какой переключатель группы был выбран, программа должна просмотреть все элементы OptionButton и найти тот из них, свойству Value которого присвоено значение True.

Напишем небольшой тестовый пример.  Для начала кинем на форму два компонента OptionButton, один из них назовем opPlus, другой opMinus.  И дадим имена: “Сложение” и “Вычитание” соответственно. У объекта opPlus установим в true свойство value*:

 Теперь добавим два текстовых поля (TextBox), с именами txNumber1 и txNumber2, текст у них очистим. Еще нам понадобиться кнопочка (CommandButton). Назовем ее cmDo и назначим заголовок “Действие”. Вот что должно в итоге получиться*:

Теперь напишем для кнопочки обработчик нажатия:

Private Sub cmDo_Click()
If opPlus.Value = True Then
MsgBox (Val(txNumber1.Text) + Val(txNumber2.Text))
End If
If opMinus.Value = True Then
MsgBox (Val(txNumber1.Text) – Val(txNumber2.Text))
End If
End Sub

Данная программа у нас проверяет, какой вариант выбран, сложение или вычитание и делает с числом соответствующее действие. Главной особенностью кнопки OptionButton в том, что невозможно выбрать сразу две кнопочки. Запустите программу и убедитесь в этом сами:

Добавим еще и умножение. Для этого кинем на форму еще один OptionButton с именем opMult и заголовком “Умножить”.  Добавим несколько строчек в нашу программу:

Private Sub cmDo_Click()
If opPlus.Value = True Then
MsgBox (Val(txNumber1.Text) + Val(txNumber2.Text))
End If
If opMinus.Value = True Then
MsgBox (Val(txNumber1.Text) – Val(txNumber2.Text))
End If
If opMult.Value = True Then
MsgBox (Val(txNumber1.Text) * Val(txNumber2.Text))
End If
End Sub

Запустим программу и убедимся, что она работает правильно:

Понравилась статья? Поделить с друзьями:
  • Optional arguments in excel vba
  • Option pricing excel model
  • Option price model excel
  • Option in word 2007
  • Option in microsoft word