Vba excel создать кнопку
Назначение макроса форме или кнопке элемента управления
Вы можете использовать кнопку элемента управления формы или кнопку команды (элемент ActiveX) для запуска макроса, выполняющего действия при нажатии пользователем. Обе эти кнопки также называются кнопкой «Отправить», которую можно настроить для автоматизации печати листа, фильтрации данных или вычисления чисел. Как правило, кнопки элемента управления формы и кнопки элемента управления ActiveX похожи на внешний вид и функции. Однако у них есть несколько отличий, которые описаны в следующих разделах.
Кнопка (элемент управления формы)
Командная кнопка (элемент ActiveX)
В следующих разделах приведены инструкции по добавлению макроса на кнопку в Excel (для Windows или Mac).
Примечание: Элементы ActiveX не поддерживаются на компьютере Mac.
Макросы и средства VBA можно найти на вкладке разработчик , которая по умолчанию скрыта.
Первый этап — включить его. Дополнительные сведения можно найти в статье: Отображение вкладки Разработчик.
Добавление кнопки (элемент управления формы)
На вкладке разработчик в группе элементы управления нажмите кнопку Вставить, а затем в разделе элементы управления формынажмите кнопку .
Щелкните на листе место, где должен быть расположен левый верхний угол кнопки. Откроется всплывающее окно назначить макрос .
Назначьте кнопку макроса, а затем нажмите кнопку ОК.
Чтобы задать свойства элемента управления, щелкните ее правой кнопкой мыши и выберите пункт Формат элемента управления.
Кнопка «добавить команду» (элемент ActiveX)
На вкладке разработчик в группе элементы управления нажмите кнопку Вставить, а затем в разделе элементы ActiveXнажмите кнопку команд .
Щелкните на листе место, где должен быть расположен левый верхний угол кнопки.
В группе элементы управления нажмите кнопку Просмотреть код. Откроется редактор Visual Basic. Убедитесь в том, что выбран пункт в раскрывающемся списке справа. Процедура Sub CommandButton1_Click (на рисунке ниже) выполняет два макроса при нажатии кнопки: SelectC15 и хелломессаже.
В подпроцедуре для кнопки Command выполните одно из указанных ниже действий.
Введите имя существующего макроса в книге. Чтобы найти макросы, выберите макросы в группе код . Вы можете запускать несколько макросов с помощью кнопки, вводя их имена на отдельных строках внутри подпроцедуры.
При необходимости добавьте собственный код VBA.
Закройте редактор Visual Basic и щелкните режим конструктора , чтобы включить режим конструктора.
Чтобы запустить код VBA, который теперь входит в состав кнопки, щелкните только что созданную кнопку ActiveX.
Чтобы изменить элемент ActiveX, убедитесь, что выбран режим конструктора. На вкладке Разработчик в группе Элементы управления нажмите кнопку Режим конструктора.
Чтобы указать свойства кнопки, на вкладке разработчик в группе элементы управления нажмите кнопку Свойства . Вы также можете щелкнуть кнопку правой кнопкой мыши и выбрать пункт Свойства.
Примечание: Перед тем как нажать кнопку Свойства, выделите объект, свойства которого требуется просмотреть или изменить.
Откроется диалоговое окно Свойства . Для получения дополнительных сведений о каждом свойстве выберите свойство и нажмите клавишу F1, чтобы отобразить соответствующий раздел справка по Visual Basic. Можно также ввести имя свойства в поле Поиск справки Visual Basic. В приведенной ниже таблице перечислены доступные свойства.
Загружается ли элемент управления при открытии книги. (Не учитывается для элементов ActiveX).
Может ли элемент управления получать фокус и реагировать на события, генерируемые пользователем.
Можно ли изменять элемент управления
Имя элемента управления
Способ привязки элемента управления к расположенным под ним ячейкам (не закреплен, можно перемещать, но нельзя изменять размер, можно перемещать и изменять размер)
Можно ли выводить элемент управления на печать
Является ли элемент управления видимым или скрытым
Атрибуты шрифта (полужирный, курсив, размер, зачеркивание, подчеркивание и насыщенность)
Bold, Italic, Size, StrikeThrough, Underline, Weight (форма)
Поясняющий текст элемента управления, определяющий или описывающий его
Будет ли содержимое элемента управления переноситься по словам в конце строки
Размер и положение
Будет ли размер элемента управления изменяться автоматически для отображения всего содержимого
Высота или ширина в пунктах
Height, Width (форма)
Расстояние от элемента управления до левого или верхнего края листа
Стиль фона (прозрачный или непрозрачный)
Цвет переднего плана
Наличие тени элемента управления
Точечный рисунок, отображаемый в элементе управления
Положение рисунка относительно его заголовка (слева, сверху, справа и так далее)
Клавиатура и мышь
Сочетание клавиш для элемента управления
Настраиваемый значок мыши
Тип указателя, отображаемого при наведении пользователем указателя мыши на определенный объект (стандартная, стрелка, I-образная и т. д.).
Принимает ли элемент управления фокус при щелчке.
Макросы и средства VBA можно найти на вкладке » разработчик «, которая скрыта по умолчанию, поэтому первым делом нужно включить ее.
Перейдите в раздел настройки > Excel . Панель инструментов & > ленты.
В категории Настроить ленту в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку Сохранить.
Добавление кнопки (элемент управления формы)
Выполните указанные ниже действия:
На вкладке разработчик нажмите кнопку .
Щелкните на листе место, где должен быть расположен левый верхний угол кнопки. Откроется всплывающее окно назначить макрос .
Примечание: Если кнопка уже вставлена, щелкните ее правой кнопкой мыши и выберите команду назначить макрос.
Назначение макроса кнопке и нажатие кнопки ОК.
Чтобы задать свойства элемента управления, щелкните его правой кнопкой мыши и выберите пункт Формат элемента управления....
Кнопка добавления команды (элемент управления Visual Basic)
На вкладке разработчик нажмите кнопку .
Щелкните на листе место, где должен находиться левый верхний угол кнопки.
Примечание: Если кнопка уже вставлена, щелкните ее правой кнопкой мыши и выберите команду назначить макрос.
В диалоговом окне Назначение макроса нажмите кнопку создать, после чего откроется Редактор Visual Basic ( VBE) на панели с помощью следующего кода:
В подпроцедуре для кнопки Command между дочерними и конечными подстроками выполните одно из указанных ниже действий.
Введите имя существующего макроса в книге. Вы можете запускать несколько макросов с помощью кнопки, вводя их имена на отдельных строках внутри процедуры Sub.
Добавьте собственный код VBA.
Щелкните режим конструктора , чтобы убедиться в том, что режим конструктора выключен, а затем закройте окно редактора Visual Basic.
Чтобы изменить кнопку, щелкните ее правой кнопкой мыши и выберите команду Visual Basic.
Чтобы задать свойства элемента управления, щелкните его правой кнопкой мыши и выберите пункт Формат элемента управления....
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.
См. также
Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).
Класс CommandButton — создание кнопки 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
- W >
Теперь нам нужно добавить на форму пять кнопок, первые три кнопки должны располагаться сразу под надписью друг за другом, определите для них следующие значения:
- 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.
Спасибо за внимание. Автор блога Владимир Баталий
VBA Excel. Элемент управления CommandButton (кнопка)
Элемент управления пользовательской формы CommandButton, используемый в VBA Excel для запуска процедур и макросов. Свойства кнопки, примеры кода с ней.
Элемент управления CommandButton
Для запуска процедур и макросов обычно используется событие кнопки – Click.
Свойства элемента CommandButton
Свойство | Описание |
AutoSize | Автоподбор размера кнопки. True – размер автоматически подстраивается под длину введенной надписи (заголовка). False – размер элемента управления определяется свойствами Width и Height. |
BackColor | Цвет элемента управления CommandButton. |
Caption | Надпись (заголовок) – текст, отображаемый на кнопке. |
ControlTipText | Текст всплывающей подсказки при наведении курсора на кнопку. |
Enabled | Возможность взаимодействия пользователя с элементом управления CommandButton. True – взаимодействие включено, False – отключено (цвет надписи становится серым). |
Font | Шрифт, начертание и размер текста надписи. |
Height | Высота элемента управления. |
Left | Расстояние от левого края внутренней границы пользовательской формы до левого края элемента управления. |
Picture | Добавление изображения вместо текста заголовка или дополнительно к нему. |
PicturePosition | Выравнивание изображения и текста на кнопке. |
TabIndex | Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой нажатием клавиш «Tab», «Enter». Отсчет начинается с 0. |
Top | Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края элемента управления. |
Visible | Видимость элемента управления CommandButton. True – элемент отображается на пользовательской форме, False – скрыт. |
Width | Ширина элемента управления. |
WordWrap | Перенос текста заголовка на новую строку при достижении ее границы. True – перенос включен, False – перенос выключен. |
В таблице перечислены только основные, часто используемые свойства кнопки. Все доступные свойства отображены в окне Properties элемента управления CommandButton.
Пример кнопки с надписью и изображением
Примеры кода VBA Excel с кнопкой
Изначально для реализации примеров на пользовательскую форму UserForm1 добавлена кнопка CommandButton1.
Пример 1
Изменение цвета и надписи кнопки при наведении на нее курсора.
Условие примера 1
- Действия при загрузке формы: замена заголовка формы по умолчанию на «Пример 1», замена надписи кнопки по умолчанию на «Кнопка», запись цвета кнопки по умолчанию в переменную уровня модуля.
- Сделать, чтобы при наведении курсора на кнопку, она изменяла цвет на зеленый, а надпись «Кнопка» менялась на надпись «Нажми!»
- Добавление кода VBA Excel, который будет при удалении курсора с кнопки возвращать ей первоначальные настройки: цвет по умолчанию и надпись «Кнопка».
Решение примера 1
1. Объявляем в разделе Declarations модуля пользовательской формы (в самом начале модуля, до процедур) переменную myColor:
Создание кнопки в excel для макросов
Рассмотрим несколько вариантов создания кнопок в Excel для запуска какой-нибудь процедуры. Для примера напишем простую процедуру, которая будет присваивать текстовой значение ячейки равным «Привет, мир!»
Переходим на вкладку Разработчик (о том как добавить ее вы можете узнать из статьи о вкладках в Excel ) и нажимаем иконку Visual Basic (либо можно воспользоваться комбинацией клавиш Alt+F11).
Откроет окно Microsoft Visual Basic for Applications. Создадим модуль.
В левой области окна Project – VBAProject нажимаем правую кнопку мыши на Microsoft Excel Objects – Insert – Module
В открывшемся окне пишем процедуру:
Далее переходим на лист Excel.
Создание кнопки через картинку или изображение
Создадим на листе простой прямоугольник с надписью «Кнопка». Нажимаем по нему правой кнопкой мыши и выбираем пункт назначить макрос.
В открытом окне программа предложит список макросов со всех открытых книг. В моем случае открыта только одна книга и в не всего один макрос «Привет». Выделяем его и нажимаем ОК.
Снимаем выделение с прямоугольника. Теперь при нажатии мышкой на него будет выполняться макрос «Привет». Для выделения элементов с назначенными макросам для последующего редактирования используйте правую кнопку мыши.
Создание кнопки элемент управления формой
По большому счету этот вариант практически ничем не отличается от предыдущего. Исключение лишь в том, что мы получаем в итоге кнопку с анимацией нажатия.
Добавляем элемент: переходим на вкладку Разработчик – Вставить – Выбираем элемент кнопка:
Обратите внимание, как только вы нажали добавить, Excel сам просит вас назначить макрос для нее, вы можете выбрать уже существующий или создать новый. Если же вы макрос не выбрали – это можно сделать позже, нажав правую кнопку мыши на кнопки и выбрав пункт назначить макрос, точно также как мы делали с прямоугольником.
Для того, чтобы изменить название кнопки, надо выделить кнопку правой кнопкой мыши, а затем нажать левой по названию.
Создание кнопки ActiveX на листе и форме.
Как и в предыдущем примере нажимаем на вкладке Разработчик иконку вставить, но теперь выбираем кнопку элемент ActiveX:
Рисуем кнопку в нужном месте. Для начала сразу давайте поменяем ее название, для этого выделяем левой кнопкой мыши, при этот обратите внимание, что режим конструктора должен быть активен:
Далее на панели инструментов нажимаем свойства:
Сейчас нас интересует свойство Caption – именно оно отвечает за надпись на кнопке. Атрибут Name отвечает за обращение к кнопке в коде процедуры, давайте тоже изменим, напишем просто Btn1 (использовать только латинские буквы).
Далее на панели инструментов в блоке элементы управления нажимаем Просмотр кода или просто двойной щелчок левой кнопкой мыши на кнопке, и переходим в код процедуры:
Пишем код для запуска процедуры с названием Привет, которую мы создали в самом начале:
Все, кнопка создана, можно проверять (не забудьте перед проверкой отключить режим конструктора).
Кнопка на форме создается аналогично, только сперва создадим форму. Переходим в окно VBA (ALT+F11). Нажимаем правой кнопкой мыши на Microsoft Excel Objects – Insert – UserForm
По умолчанию вызвался инструмент Toolbox из которого мы должны добавить кнопку CommandButton. Вставляем ее на форму и сразу изменим имя. Это делается точно также, как и со случаем кнопки ActiveX на листе, только сейчас для того, чтобы выбрать свойства нажимает правой клавишей на кнопке и выбираем Properties:
Также изменяем свойство Caption на Кнопка, а свойство Name на Btn1. Далее заходим в код кнопки – двойной щелчок на кнопке. Пишем в коде процедуры Call Привет:
Теперь мы сделаем так – кнопка из предыдущего примера будет вызывать эту форму, а кнопка на форме изменять значения ячейки A1.
Свойство Name созданной формы имеет значение UserForm1 (это легко проверить, зайдя в свойства (Properties) самой формы). Для того, чтобы выводить форму, теперь заходим в код кнопки на листе (режим конструктора должен быть включен). И меняем Call Привет на UserForm1.Show вот так:
Все проверяем. Нажимаем кнопку на листе (перед этим отключаем режим конструктора):