Элемент управления пользовательской формы CheckBox для выбора или невыбора его пользователем и передачи результата в VBA Excel. Свойства «Флажка», примеры кода.
Элемент управления CheckBox
Элемент управления CheckBox состоит из флажка и надписи. В VBA Excel флажок имеет квадратную форму, надпись расположена справа от него. Надпись реагирует на нажатие мышью так же, как и флажок.
Кроме состояний «выбран» или «не выбран», существует и третье состояние флажка: серая галочка на сером фоне. Получить такое состояние на пользовательской форме можно путем присвоения свойству CheckBox.Value значения Null.
Надписи флажков выведены с помощью следующего кода VBA Excel:
1 2 3 4 5 6 7 8 9 10 11 |
Private Sub UserForm_Initialize() CheckBox1.Value = False CheckBox1.Caption = "CheckBox1.Value = " _ & CheckBox1.Value CheckBox2.Value = Null CheckBox2.Caption = "CheckBox2.Value = " _ & CheckBox2.Value CheckBox3.Value = True CheckBox3.Caption = "CheckBox3.Value = " _ & CheckBox3.Value End Sub |
Интересно было посмотреть, какое значение отобразится в надписи элемента управления CheckBox2. Обратите внимание на то, что если строку CheckBox2.Caption = "CheckBox2.Value = " & CheckBox2.Value
заменить на CheckBox2.Caption = CheckBox2.Value
, будет сгенерирована ошибка, так как в VBA не существует текстового отображения значения Null.
Эксперименты показали, что отобразить «Флажок» в третьем состоянии можно также с помощью присвоения свойству CheckBox.Value значения «пустая строка».
Элемент управления CheckBox может использоваться на пользовательской форме для
- выбора или отмены каких-либо параметров и условий,
- отображения или скрытия других элементов управления,
- изменение доступности других элементов управления для взаимодействия с пользователем.
Если требуется выбор только одной опции из группы предложенных, для этой цели в VBA Excel используется набор элементов управления OptionButton.
Свойства элемента «Флажок»
Свойство | Описание |
---|---|
AutoSize | Автоподбор размера «Флажка». True – размер автоматически подстраивается под длину набираемой строки. False – размер элемента управления определяется свойствами Width и Height. |
ControlSource | Ссылка на источник данных для свойства Value. |
ControlTipText | Текст всплывающей подсказки при наведении курсора на CheckBox. |
Enabled | Возможность взаимодействия пользователя с элементом управления. True – взаимодействие включено, False – отключено (цвет флажка и надписи становится серым). |
Font | Шрифт, начертание и размер текста надписи. |
Height | Высота элемента управления. |
Left | Расстояние от левого края внутренней границы пользовательской формы до левого края элемента управления. |
Picture | Добавление изображения вместо текста надписи или дополнительно к нему. |
PicturePosition | Выравнивание изображения и текста в поле надписи. |
TabIndex | Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой нажатием клавиш «Tab», «Enter». Отсчет начинается с 0. |
TextAlign* | Выравнивание текста надписи: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю. |
Top | Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края элемента управления. |
TripleState | Определяет, может ли пользователь делать выбор между двумя состояниями «Флажка» или между тремя, включая серую галочку на сером квадрате. True – доступны три состояния, False – доступны два состояния. |
Value | Значение «Флажка»: True – галочка установлена, False – галочка не установлена, Null – серая галочка на сером квадрате. |
Visible | Видимость элемента CheckBox. True – элемент отображается на пользовательской форме, False – скрыт. |
Width | Ширина элемента управления. |
WordWrap | Перенос текста надписи на новую строку при достижении границы ее поля. True – перенос включен, False – перенос выключен. |
* При загруженной в поле надписи картинке свойство TextAlign не работает, следует использовать свойство PicturePosition.
Свойство по умолчанию для элемента CheckBox – Value, основное событие – Click.
В таблице перечислены только основные, часто используемые свойства «Флажка». Все доступные свойства отображены в окне Properties элемента управления CheckBox.
Примеры использования CheckBox
Пример 1
Отображение элемента управления CheckBox на пользовательской форме с параметрами, заданными в коде VBA Excel:
1 2 3 4 5 6 7 8 9 |
Private Sub UserForm_Initialize() With CheckBox1 .Caption = "Нажмите на меня" .ControlSource = "A1" .Value = False .Left = 12 .Top = 12 End With End Sub |
Размещается данная процедура в модуле пользовательской формы.
Пример 2
Смена надписи «Флажка» в зависимости от его состояния:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
'Устанавливаем первоначальные 'значения свойств «Флажка» Private Sub UserForm_Initialize() With CheckBox1 .Caption = "Поставьте галочку" .Value = False .TripleState = False End With End Sub 'Меняем надпись «Флажка» при 'смене параметра CheckBox1.Value Private Sub CheckBox1_Change() If CheckBox1.Value Then CheckBox1.Caption = "Снимите галочку" Else CheckBox1.Caption = "Поставьте галочку" End If End Sub |
Пример 3
Скрытие и отображение, изменение доступности других элементов управления с помощью «Флажка».
Для реализации этого примера необходимо создать пользовательскую форму с четырьмя элементами управления: CheckBox1, TextBox1, TextBox2 и CommandButton1. А в модуле формы разместить следующий код:
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 |
'Устанавливаем первоначальные 'значения свойств элементов управления Private Sub UserForm_Initialize() With CheckBox1 .Caption = "Хочу сложить два числа" .Value = False .TripleState = False End With With TextBox1 .Enabled = False .Text = "Слагаемое 1" End With With TextBox2 .Enabled = False .Text = "Слагаемое 2" End With With CommandButton1 .Caption = "Сложить" .Visible = False End With End Sub 'Меняем свойства других элементов 'управления при смене состояния «Флажка» Private Sub CheckBox1_Change() If CheckBox1.Value Then TextBox1.Enabled = True TextBox2.Enabled = True CommandButton1.Visible = True Else TextBox1.Enabled = False TextBox2.Enabled = False CommandButton1.Visible = False End If End Sub 'Складываем два числа Private Sub CommandButton1_Click() If IsNumeric(TextBox1) And IsNumeric(TextBox2) Then MsgBox TextBox1 & " + " & TextBox2 & " = " _ & CDbl(TextBox1) + CDbl(TextBox2) End If End Sub |
Форма открывается с недоступными для пользователя текстовыми полями и скрытой кнопкой «Сложить»:
После установки галочки на флажке текстовые поля становятся доступными для редактирования, и отображается кнопка «Сложить»:
Здравствуйте. Подскажите пожалуйста, можно реализовать следующее в Word и Excel 2010:
1) из меню «разработчик» вставить элемент ActiveX — флажок (CheckBox)
2) так же в файл вставить рисунок (или обычным способом или как элемент ActiveX)
3) рисунок разместить на листе в стороне от области, которую потом нужно будет печатать.
4.1) при нажатии на флажок (CheckBox) рисунок нужно отобразить в области листа, подготавливаемой к печати.
4.2)Или может быть рисунок сразу разместить где нужно, и с помощью CheckBox делать его видимым или не видимым.
Рисунков и CheckBox будет несколько. Каждый CheckBox будет связан с одним рисунком.
Обсуждение закрыто.