Vba excel button методы

Обновлено: 04.07.2024

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

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

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

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

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

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

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

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

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

Спасибо за внимание. Автор блога Владимир Баталий

Вы можете использовать кнопку управления формы или кнопку (ActiveX) для запуска макроса, который выполняет действие, когда пользователь щелкает его. Обе эти кнопки также называются push-кнопками, которые можно настроить для автоматизации печати, фильтрации данных или вычисления чисел. Как правило, кнопки управления формы и ActiveX похожи по внешнему виду и функции. Однако между ними есть несколько отличий, которые объясняются в следующих разделах.

Кнопка (управление формы)

В разделах ниже вы узнаете, как добавить макрос на кнопку в Excel для Windows или Mac.

Примечание: ActiveX не поддерживаются на компьютере Mac.

Макрос и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта.

Прежде всего нужно включить его. Дополнительные сведения см. в статье Показ вкладки "Разработчик".

Вкладка "Разработчик" на ленте

Добавление кнопки (управление формы)

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

Щелкните на листе место, где должен быть расположен левый верхний угол кнопки. Появится всплывающее окно Назначение макроса.

Назначьте кнопке макрос и нажмите кнопку ОК.

Чтобы задать свойства кнопки, щелкните ее правой кнопкой мыши и выберите форматирование.

Добавление кнопки (ActiveX управления)

На вкладке Разработчик в группе Элементы управления нажмите кнопку Вставить, а затем вгруппе Элементы управления ActiveX нажмите кнопку .

Щелкните на том месте, где должен отображаться левый верхний угол кнопки.

В группе Элементы управления нажмите кнопку Код представления. При этом Visual Basic редактора. Убедитесь, что в списке справа выбрано нажатие кнопки. При нажатии кнопки CommandButton1_Click процедуры (см. рисунок ниже) запускаются эти два макроса: SelectC15 и HelloMessage.

Подпрограмма в редакторе Visual Basic

В подпроцеду для кнопки сделайте следующее:

Введите имя существующего макроса в книге. Макрос можно найти, щелкнув Макрос в группе Код. С помощью кнопки можно запускать несколько макроса, вводя их имена в отдельных строках подпроцесса.

При необходимости добавьте собственный код VBA.

Закроем Visual Basic редактора и нажмите кнопку Режим конструктора режим конструктора, чтобы отключить режим конструктора.

Чтобы запустить код VBA, который теперь является частью кнопки, нажмите кнопку ActiveX, которую вы только что создали.

Чтобы изменить элемент ActiveX, убедитесь, что выбран режим конструктора. На вкладке Разработчик в группе Элементы управления нажмите кнопку Режим конструктора.

Чтобы задать свойства кнопки, на вкладке Разработчик в группе Элементы управления нажмите кнопку Свойства . Можно также щелкнуть правой кнопкой мыши кнопку и щелкнуть свойства .

Примечание: Перед тем как нажать кнопку Свойства, выделите объект, свойства которого требуется просмотреть или изменить.

Появится поле Свойства. Для получения дополнительных сведений о каждом свойстве выберите свойство и нажмите клавишу F1, чтобы отобразить соответствующий раздел справка по Visual Basic. Можно также ввести имя свойства в поле Поиск справки Visual Basic. В следующей таблице 2010 2010 2016 2016 2016 2016 201

Описание параметра

Необходимое свойство

Загружает ли его при открытом книге. (Игнорируется для ActiveX элементов управления.)

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

Можно ли изменять элемент управления

Имя элемента управления

Способ привязки элемента управления к расположенным под ним ячейкам (не закреплен, можно перемещать, но нельзя изменять размер, можно перемещать и изменять размер)

Можно ли выводить элемент управления на печать

Является ли элемент управления видимым или скрытым

Атрибуты шрифта (полужирный, курсив, размер, зачеркивание, подчеркивание и насыщенность)

Bold, Italic, Size, StrikeThrough, Underline, Weight (форма)

Поясняющий текст элемента управления, определяющий или описывающий его

Будет ли содержимое элемента управления переноситься по словам в конце строки

Размер и положение

Будет ли размер элемента управления изменяться автоматически для отображения всего содержимого

Высота или ширина в пунктах

Height, Width (форма)

Расстояние от элемента управления до левого или верхнего края листа

Форматирование

Стиль фона (прозрачный или непрозрачный)

Цвет переднего плана

Наличие тени элемента управления

Изображение

Точечный рисунок, отображаемый в элементе управления

Положение рисунка относительно его заголовка (слева, сверху, справа и так далее)

Клавиатура и мышь

Сочетание клавиш для элемента управления

Настраиваемый значок мыши

Тип указателя, отображаемого при наведите указатель мыши на определенный объект (стандартный, стрелка, I-указатель и так далее).

Будет ли фокус при щелчке.

Макрос и средства VBA находятся на вкладке "Разработчик", которая по умолчанию скрыта, поэтому сначала нужно включить ее.

Перейдите в Excel > параметры. > ленты & панель инструментов.

В категории Настроить ленту в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку Сохранить.

Чтобы добавить его на ленту, выберите его рядом с "Разработчиком"

Добавление кнопки (управление формы)

На вкладке Разработчик нажмите кнопку .

Щелкните на листе место, где должен быть расположен левый верхний угол кнопки. Появится всплывающее окно Назначение макроса.

Примечание: Если кнопка уже вставлена, щелкните ее правой кнопкой мыши и выберите назначить макрос.

Назначьте кнопке макрос и нажмите кнопку ОК.

Чтобы задать свойства кнопки, щелкните ее правой кнопкой мыши и выберите форматирование.

Добавление кнопки (Visual Basic управления)

На вкладке Разработчик нажмите кнопку .

Щелкните место на том месте, где должен отображаться левый верхний угол кнопки.

Примечание: Если кнопка уже вставлена, щелкните ее правой кнопкой мыши и выберите назначить макрос.

В диалоговом окне Назначение макроса выберите Новый, который откроет редактор Visual Basic(VBE)в области со следующим кодом:

В подпроцеду для кнопки между строками Sub и End Sub сделайте следующее:

Введите имя существующего макроса в книге. Вы можете запускать несколько макроса с помощью кнопки, введя их имена в отдельных строках внутри под процедуры.

Добавьте собственный код VBA.

Чтобы изменить кнопку, щелкните ее правой кнопкой мыши ивыберите Visual Basic .

Чтобы задать свойства кнопки, щелкните ее правой кнопкой мыши и выберите форматирование.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Как уже было сказано во введении, у программных объектов имеются различные свойства. Первое очевидное желание заключается в том, чтобы просмотреть (а затем и изменить) значения свойств объектов. Для просмотра свойств объекта его необходимо сначала выделить в режиме конструктора (щелкнуть на нем мышью), а затем с помощью пиктограммы Свойства (она расположена рядом с пиктограммой Режим конструктора) открыть окно свойств (рис. 1.8).

Рис. 1.8. Окно свойств объекта

Рис. 1.8. Окно свойств объекта

В окне свойств отображается таблица набор строк в два столбца. При этом левый столбец отводится для названий свойств, а в нравом расположены значения этих свойств. Понятно, что содержание левого столбца изменить нельзя свойства объекта уже определены его разработчиком (компанией Microsoft). А значения свойств мы поменять можем для этого достаточно щелкнуть в ячейке правого столбца и изменить се содержание.

Если приглядеться к окну на рис. 1.8, то мы увидим, что для ряда свойств возможны только два варианта значений. Например, для свойства Visible (определяет видимость объекта на экране) возможны только значения False и True. Такая ситуация наблюдается и для ряда других свойств. Среди них можно отметить Enabled определяет доступ к объекту в режиме выполнения (если установить для этого свойства значение False и выйти из режима конструктора, то объект будет недоступен). Свойство AutoSize позволяет обеспечить автоматическую подгонку размеров кнопки под размер текста, расположенного на ней. Такое будет происходить, если установить True в качестве значения данного свойства.

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

  • Width ширина;
  • Height высота;
  • Тор координата верхней границы элемента, начиная от верхней части листа;
  • Left координата левой границы элемента, начиная от левой части листа.

Если для свойства Enabled установлено значение False, то элемент управления на экране будет выглядеть более блекло (такая ситуация знакома по работе с различными приложениями, когда ряд разделов меню недоступен).

Рис. 1.9. Палитра цветов

Если теперь в режиме конструктора выбудете перемещать созданную на листе кнопку но экрану и изменять ее размеры (с помощью окружающих ее маркеров), то соответствующие значения в окне свойств будут меняться. И наоборот, изменив значения в окне свойств, вы увидите изменения на экране. Для установки значений ряда свойств следует использовать пиктографические меню. Так, с помощью свойства BackColor можно изменять цвет кнопки. Для этого всего лишь требуется щелчком мыши выбрать необходимый цвет (рис. 1.9). Аналогичное свойство ForeColor определяет цвет текста на кнопке. За надпись на кнопке отвечает другое свойство Caption. Если напротив названия этого свойства ввести текст (рис. 1.10), то мы увидим его и на кнопке.

Рис. 1.10. Установка значения свойства Caption

Рис. 1.10. Установка значения свойства Caption

Для изменения шрифта текста на кнопке имеется свойство Font. Если в окне свойств попытаться изменить его значение, то перед вами откроется знакомое (но работе с различными приложениями) окно для выбора шрифта и размера букв (рис. 1.11). При этом технические действия здесь выполняются с помощью щелчков мышью.

Рис. 1.11. Окно диалога для выбора шрифта надписи на кнопке

Рис. 1.11. Окно диалога для выбора шрифта надписи на кнопке

Еще одно интересное свойство, Picture, позволяет разместить на кнопке изображение (рис. 1.12) из графического файла. Для этого в качестве значения свойства следует указать имя файла. Это действие производится с помощью стандартного диалогового окна (рис. 1.13), в котором необходимо выбрать один из графических файлов на компьютере либо в сети. В случае, если вы захотите убрать изображение, то в ноле для значения данного свойства следует воспользоваться клавишей Delete.

Во введении уже упоминалось, что основное свойство объекта это имя. В окне свойств оно называется Name. Как мы видели (см. рис. 1.8) на примере создания кнопки, Excel автоматически присвоил ей имя. Имя первой созданной кнопки на рабочем листе по умолчанию CommandButtonl, которое вы при желании можете изменить. Явной необходимости изменения имен, которые присваиваются по умолчанию, нет. Однако очень часто программисты назначают объектам свои имена. Это связано с тем, что к любым объектам на листе мы можем получить доступ из текста программы (фактически требуется обращаться к свойствам и методам этих объектов), указав имя конкретного объекта. В связи с этим с точки зрения организации программного кода часто удобнее использовать свою систему назначения имен объектов.

Рис. 1.12. Размещение на кнопке изображения

Рис. 1.12. Размещение на кнопке изображения

Система формирования имен по умолчанию заключается в комбинации типа элемента управления (CommandButton — командная кнопка) и числа (порядкового номера элемента управления данного типа).

Для первой созданной кнопки имя — CommandButton1. Если мы на рабочем листе разместим еще одну кнопку, то она будет иметь имя CommandButton2. При добавлении последующих кнопок данный принцип сохраняется. Если вы все же решитесь изменить имя, то вместо CommandButton1 в окне свойств следует набрать слово или словосочетание, которое вас устраивает. Но заметим, что оно должно быть без пробелов внутри (частая ошибка в первых разработках). В качестве примера подберем новое имя для кнопки — PrimerButton.

Рис. 1.13. Окно диалога для выбора графического файла

Рис. 1.13. Окно диалога для выбора графического файла

Теперь, если вы произвели описанные выше установки (а также убрали изображение очистили значение в свойстве Picture), кнопка будет выглядеть так, как показано на рис. 1.14. Для свойства AutoSize здесь установлено значение True, что позволяет подогнать размеры кнопки под расположенную на ней надпись.

С подобных шагов начинается любая разработка на листе размещаются элементы ActiveX, и ряду их свойств присваиваются необходимые значения. На первый взгляд свойства Name и Caption похожи, и кажется, одно из них является лишним. Однако это не так, и в связи с этим дадим небольшое пояснение. Дело в том, что Name внутреннее название объекта, и значение этого свойства используется на программном уровне (во введении об этом уже шла речь). Если мы хотим использовать в программном коде обращение к свойствам и методам объекта, то в строке программной процедуры необходимо указать имя объекта. Свойство же Caption отвечает просто за надпись на кнопке, и значение его только отображается на экране.

Реально у каждого элемента ActiveX имеется много свойств. Некоторые из них являются общими для большинства (или даже для всех) элементов ActiveX, а другие свойства уникальны для определенных элементов управления.

Рис. 1.14. Установка свойств кнопки

Рис. 1.14. Установка свойств кнопки

Таким образом, результатом выполненных действий явились создание нового объекта в нашей рабочей книге Microsoft Excel и установка значений для ряда его свойств. Вообще, в режиме конструктора мы размещаем на рабочем листе элементы ActiveX и устанавливаем значения их свойств, а в режиме выполнения работаем с созданными объектами (щелкаем кнопками, вводим текст в текстовые окна и т. д.).

кнопки надписи в VB

Выполнение:

  1. Создайте новый проект на VB2008 и назовите его Hello.
  2. На новой форме (назовите ее frmHello, изменив значение свойства Name) создайте следующие элементы управления:
    • Кнопку – для выхода из программы,
    • Метку – для вывода надписи «Привет!»,
    • Кнопку для подачи команды к выводу надписи на метке:

Для этого на панели Toolbox (Панель элементов) в левой части экрана нажмите плюсик рядом с надписью All Windows Forms (Все формы Windows Forms). И дважды щелкните на элементе Button (Кнопка). На рабочей форме появилось изображение кнопки.

Перейдите на панель Properties (Свойства) и в поле Name задайте имя кнопки – btnExit.

Аналогичным образом добавьте Метку, на панели Toolbox (Панель элементов) нажав дважды на Label (Метка), задайте свойству Name Метки – lblHello. Разместите метку на форме выше кнопки.

Затем добавьте еще одну кнопку и задайте ее свойству Name значение btnHello. Расположите ее на форме.

На видео можно просмотреть варианты работы со свойствами объектов в Visual Basic:

1 способ:

2 способ:

Когда Вы создаете приложение, VB автоматически генерирует для него определенный код. Например, для формы генерируется следующий код:

Public Class Form1 'Код основной программы End Class

Главный элемент в этом фрагменте это Class: организующая единица, которая группирует и связывает родственный код. Проекты состоят из классов.

  1. Запрограммируйте событие Click для Кнопки btnExit оператором End . Для этого сделайте двойной щелчок на Кнопке btnExit и в открывшемся окне кода наберите на клавиатуре оператор End . В итоге должно получиться:

Private Sub btnExit_Click(… 'здесь часть кода отсутствует End End Sub

В этом фрагменте главным элементом является Sub: это инструкция выполнения задания, которая называется методом. В данном случае это метод кнопки btnExit, который генерируется по щелчку на кнопке (событие Click – по щелчку).

Private Sub btnhello_Click(… lblhello.Text = “Привет” End Sub

  1. Повторите действия из пунктов 6 и 7.
  2. Сохраните приложение.

Если у Вас возникли вопросы, предлагаем просмотреть видео урок visual basic по выполнению данной лабораторной работы.

Вопросы для самоконтроля.

  1. Что такое элемент управления?
  2. Что такое событие?
  3. Назовите основную функцию элемента управления Button.
  4. Каково основное предназначение элемента управления Label?
  5. Какой оператор VB прекращает выполнение программы?
  6. Когда генерируется событие Click для элемента управления Button?

Если тема осталась непонятной, предлагаем посмотреть видео о добавлении кода для события Click кнопки:

Читайте также: