Класс CommandButton — создание кнопки VBA

Класс CommandButton — создание кнопки VBA Макросы на VBA

В этой статье мы познакомимся с классом CommandButton VBA языка, который отвечает за создание и настройку кнопки. В предыдущей статье я описал компонент Label, тут, в примерах, я его тоже буду использовать, просто хочу пойти по принципу – постепенно усложняем код и увеличиваем код.

Скажу честно, мне намного интересней описывать синтаксис самого языка, чем работу визуальными элементами. Компонент vba — CommandButton обладает следующими основными свойствами:

Cancel – данное свойство актуально, если пользователю нужно подтвердить или отменить выбор. Так если мы создадим кнопку с именем Отмена, и при нажатии на нее должно произойти закрытие формы, то если задано значении true для данного свойства —  кнопка будет нажиматься автоматически при нажатии на клавишу Esc.

Caption – собственно, надпись на кнопке

Name – имя объекта CommandButton vba языка, как правило имя аналогично названию класса (CommandButton1, CommandButton2, … , CommandButtonN). Лучше устанавливать что то более понятное, например, bOk, bEsc, bSumm и так далее.

Default  — при значении в true, произойдет автоматическое нажатие кнопки при нажатии на клавиатуре клавиши Enter.

Picture – позволяет указать путь к пиктограмме, которая будет отображаться вместо надписи на CommandButton.

Enable – определяет активность (true) или неактивность (false) объекта для класса CommandButton vba языка.

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

Accelerator – позволяет задать комбинацию клавиш для данного элемента управления. Вы просто прописываете имя клавиши, комбинация осуществляется вместе с клавишей Alt.

И так, теперь приступим к практике.

Добавляем компонент:

Откройте редактор VBA (Alt +F11) и добавьте в проект новый модуль (Insert/Module) и форму (Insert/UserForm). Великолепно, в окне проектов откройте добавленный объект класса UserForm, в окне Свойств установите следующие значения:

  • Caption – “Работа с кнопками”
  • Height – 147.75
  • Width – 300.75

Хорошо, теперь в окне ToolBox (View/ToolBox) выберите элемент управления Label и добавьте его на форму, установите следующие значения:

  • Caption – оставляем пустым!!!
  • Height – 24
  • Width – 282
  • Left – 6
  • Top — 6

Теперь нам нужно добавить на форму пять кнопок, первые три кнопки должны располагаться сразу под надписью друг за другом, определите для них следующие значения:

  • Name – Button1, Button2 и Button3
  • Caption – Кнопка 1, Кнопка 2 и Кнопка 3
  • Height – для всех 24
  • Width – для всех 72
  • Top – для всех 48
  • Left – 18, 108 и 198

Теперь в самый низ добавьте еще две кнопки, со следующими значениями:

  • Name – ButtonExit и ButtonNoActive
  • Caption – Выход и Неактивная
  • Height – для всех 24
  • Width – для всех 120
  • Top – для всех 90
  • Left – 18и 156

Для кнопки под именем ButtonNoActive установите свойство Enable в false.

Элементы Label и CommandButton на форме

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

При нажатии на первые три кнопки класса vba CommandButton, в поле Label должны отображается надписи вида “нажата такая-то …”, плюс, цвет текста должен тоже измениться. Одна из нижних кнопочек должна отвечать за выход, а другая будет всегда неактивной.

Теперь давайте приступим к программированию, в редакторе кода для модуля как всегда пишем:

Sub Module2()
UserForm2.Show
End Sub

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

В редакторе кода для самой формы (что бы его открыть, можете просто дважды щелкнуть по форме) пропишите следующие процедуры:

PrivateSub ButtonExit_Click()
Unload Me
End Sub

Тут происходит обработка события Click для ButtonExit, Unload Me – отвечает за удаление из памяти (закрытие) текущего объекта (UserForm), проще говоря, “Выход”.

Private Sub UserForm_Activate()
Label1.Caption = "Нажмите на любую кнопку"
Label1.FontSize = 20
Label1.ForeColor = &H0
Label1.TextAlign = fmTextAlignCenter
End Sub

Обработка события Activate для класса UserForm – как только запустится макрос, в поле Надпись появится заданный текст, размером в 20, черного цвета, он будет расположен по центру.

Private Sub Button1_Click()
Label1.Caption = "Нажата Кнопка 1"
Label1.ForeColor = &H66FF
End Sub
 
Private Sub Button2_Click()
Label1.Caption = "Нажата Кнопка 2"
Label1.ForeColor = &HFF6600
End Sub
 
Private Sub Button3_Click()
Label1.Caption = "Нажата Кнопка 3"
Label1.ForeColor = &H33CC00
End Sub
Процедуры в редакторе кода

Последние три процедуры отвечают за обработку одинарного клика по трем кнопкам, что находятся сразу под надписью. Будет меняться текст Надписи и его цвет. И так, в этой статье мы рассмотрели класс CommandButton языка VBA.

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

  1. Дмитрий

    А можете помочь с не простым для меня заданием?
    Или покажите пример.

    Нужно сделать три текстовых поля для ввода числовых значений. Напротив каждого поля должна быть кнопка «записать данные». И при нажатии каждой кнопки со своего поля данные записывались в определённую ячейку определённого лист книги Exel?

    Ответить