Перейти к содержимому

VBA Excel. Элемент управления CheckBox (флажок)

Элемент управления пользовательской формы CheckBox для выбора или невыбора его пользователем и передачи результата в VBA Excel. Свойства «Флажка», примеры кода.

  1. Элемент управления CheckBox
  2. Свойства элемента «Флажок»
  3. Примеры использования CheckBox

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

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

Элемент управления CheckBox на пользовательской форме

Элемент управления CheckBox состоит из флажка и надписи. В VBA Excel флажок имеет квадратную форму, надпись расположена справа от него. Надпись реагирует на нажатие мышью так же, как и флажок.

По тексту статьи значение слова «Флажок» в кавычках равно значению слова CheckBox, флажок без кавычек обозначает квадрат с галочкой или без нее.

Кроме состояний «выбран» или «не выбран», существует и третье состояние флажка: серая галочка на сером фоне. Получить такое состояние на пользовательской форме можно путем присвоения свойству CheckBox.Value значения Null.

Три состояния элемента управления CheckBox

Надписи флажков выведены с помощью следующего кода VBA Excel:

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:

Private Sub UserForm_Initialize()
  With CheckBox1
    .Caption = "Нажмите на меня"
    .ControlSource = "A1"
    .Value = False
    .Left = 12
    .Top = 12
  End With
End Sub

Элемент управления CheckBox, привязанный к ячейке

Размещается данная процедура в модуле пользовательской формы.

Если несколько элементов управления CheckBox привязать к одной ячейке, то при клике на одном из них, менять свое состояние будут и все остальные.

Пример 2
Смена надписи «Флажка» в зависимости от его состояния:

'Устанавливаем первоначальные
'значения свойств «Флажка»
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. А в модуле формы разместить следующий код:

'Устанавливаем первоначальные
'значения свойств элементов управления
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

Форма открывается с недоступными для пользователя текстовыми полями и скрытой кнопкой «Сложить»:

После установки галочки на флажке текстовые поля становятся доступными для редактирования, и отображается кнопка «Сложить»:

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора. При добавлении в комментарий кода VBA Excel, вставьте перед его началом тег [vb] и по окончании кода - [/vb].