Кнопка для макроса excel: Как сделать кнопку в Excel с помощью макроса и гиперссылки
Кнопка для вызова макроса в Excel
Кнопка для вызова макроса в Excel
Добрый день, уважаемые читатели и подписчики блога! Как следует из заголовка, сегодня речь пойдёт о добавлении кнопок для вызова макроса. Вопрос, на мой взгляд, простой, но после получения нескольких десятков вопросов на эту тему, решил написать отдельный пост.
В прошлых статьях этот вопрос рассматривался вскользь. Теперь рассмотрим его более подробно и обстоятельно.
Вызывать макросы в Excel можно несколькими способами (естественно, макросы должны быть в книге):
- вставкой кнопки;
- сочетанием клавиш;
- вставкой автофигуры;
- вставкой рисунка.
Вставка кнопки.
Переходим на вкладку «Разработчик», в блоке кнопок «Элементы управления» нажимаем «Вставить», в появившемся списке выбираем вариант «Кнопка».
В выпавшем списке есть два варианта: кнопка как элемент управления формы и как элемент ActiveX. В принципе, большой разницы в выборе кнопок нет, так что возьмём кнопку из блока «Элементы управления формы».
После щелчка ничего не произойдёт, так как нужно указать место для нашей кнопки (простым выделением). На рисунке ниже будут два варианта кнопок.
Первый — это кнопка управления формы, второй — кнопка управления ActiveX.
Отличие — в добавлении вызова макроса. В первом случае нужно щёлкнуть правой кнопкой и выбрать «Назначить макрос…», во втором просто сделать двойной щелчок по кнопке и дописать вызов макроса. В моём случае это «Call DF».
Сочетание клавиш
С сочетанием клавиш всё гораздо проще. Переходим на вкладку «Разработчик», нажимаем кнопку «Макросы», в выпавшем окне выбираем макрос (DF), нажимаем кнопку «Параметры» и назначаем сочетание клавиш. Как правило это сочетание с клавишей Ctrl. Для вызова макроса нужно просто нажать назначенные клавиши.
Автофигура
Переходим на вкладку «Вставка», нажимаем кнопку «Иллюстрации», в выпавшем списке выбираем «Фигуры» и выбираем фигуру, которую хотим вставить. После выбора фигуры не забываем щёлкнуть по листу, как и в случае с кнопками.
Далее, щёлкаем правой кнопкой мышки по фигуре и используем пункт «Назначить макрос…» как и в кнопках. Выбираем наш макрос и жмём «OK».
Рисунок
С рисунками та же ситуация, что и с фигурами. Поэтому повторять порядок действий не буду. Вместо «Фигуры» нужно выбрать «Рисунки» и указать путь к любому рисунку на вашем ПК.
Далее снова щёлкаем правой кнопкой мышки и выбираем «Назначить макрос», выбираем нужный нам и нажимаем «ОК».
В итоге у нас появится книга Excel с четырьмя вариантами вызова макросов.
Скажу напоследок, что таким же способом можно назначить макрос и объекту WordArt, SmarArt рисунку, любой диаграмме.
Программное добавление кнопок на лист Excel
Надстройка предназначена для автоматизации добавления кнопок запуска макроса на лист Excel
Поскольку макросы мне приходится писать очень часто, рисование кнопок их запуска отнимает достаточно много времени.
Решением стало создание этой надстройки — теперь достаточно выделить диапазон ячеек на листе Excel, нажать комбинацию клавиш типа Alt + 1, — и через мгновение на листе создаётся зелёная кнопка с названием «Запуск», расположенная точно поверх ранее выделенных ячеек. Остаётся только назначить этой кнопке макрос, щелкнув по ней правой клавишей мыши.
Пример кода VBA для создания кнопки:
Sub ПримерИспользования() СоздатьКнопку Selection, vbGreen, "Обработать данные": End Sub End Sub
Для вызова формы (где можно настроить текст и цвет будущей кнопки) предназначена комбинация клавиш Ctrl + Alt + Shift + B
Код функции добавления кнопок на лист Excel:
Function СоздатьКнопку(ByRef ra As Range, Optional ByVal ButtonColor As Long = 255, _ Optional ByVal ButtonName$ = "Запуск", Optional ByVal MacroName As String = "") ' Функция рисует автофигуру (прямоугольник) поверх диапазона ячеек ra ' и окрашивает созданную кнопку (с названием ) в цвет Button_color ' Созданной кнопке назначается макрос MacroName On Error Resume Next: Err.Clear w = ra.Width: h = ra.Height: l = ra.Left: t = ra.Top w = IIf(w >= 10, w, 50): h = IIf(h >= 10, h, 50) ' не создаём маленькие кнопки - минимум 10*10 ' добавляем кнопку на лист Dim sha As Shape: Set sha = ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, l, t, w, h) With sha ' оформляем автофигуру .Fill.Visible = msoTrue: .Fill.Solid .Fill.ForeColor.RGB = ButtonColor: .Fill.Transparency = 0.3 .Fill.BackColor.RGB = vbWhite .Fill.TwoColorGradient msoGradientFromCenter, 2 ' градиентная заливка .Adjustments.item(1) = 0.23: .Placement = xlFreeFloating .OLEFormat.Object.PrintObject = False ' кнопки не выводятся на печать .Line.Weight = 0.25: .Line.ForeColor.RGB = vbBlack ' делаем тонкий черный контур With .TextFrame ' добавляем и форматируем текст .Characters.Text = ButtonName$ ' добавляем текст With .Characters.Font ' изменяем начертание текста .Size = IIf(h >= 16, 10, 8): .Bold = True: .Color = vbBlack: .Name = "Arial" ' цвет и шрифт End With .HorizontalAlignment = xlCenter: .VerticalAlignment = xlVAlignCenter End With .onaction = MacroName ' назначаем кнопке макрос (если он задан в параметрах) End With End Function
Запуск макроса кнопкой
Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.
Задача: в предыдущей заметке мы рассказали, как запускать макросы клавиатурными сокращениями. Можно ли для этой цели использовать кнопки на листе?
Решение: существует множество способов запустить макрос кнопкой (рис. 1).
Рис. 1. Вы можете запустить макрос с помощью любого из этих элементов
Скачать заметку в формате Word или pdf, примеры в формате Excel (с кодом VBA)
Способ 1. Элемент управления формы Кнопка
В Excel 2007 или более поздней версии перейдите на вкладку РАЗРАБОТЧИК. В области Элементы управления кликните на кнопке Вставить, в раскрывающемся списке выберите значок Кнопка (рис. 2). Перетащите значок на лист, и нарисуйте кнопку. Когда вы закончите отрисовывать кнопку, появится диалоговое окно Назначить макрос объекту. Выберите макрос и нажмите Ok.
Рис. 2. Вставка кнопки, как элемента управления формы
Примечание. Если вы не видите вкладку РАЗАБОТЧИК, пройдите по меню ФАЙЛ –> Параметры. Перейдите на вкладку Настроить ленту, и в правой части окна Параметры Excel – Основные вкладки поставьте галочку напротив Разработчик.
Кнопка по умолчанию имеет название Кнопка 1. Чтобы изменить имя: нажмите Ctrl и кликните на кнопке (это позволит сделать кнопку активной без запуска макроса). Удалите текст с названием кнопки и наберите новое название. Вы можете изменить тип и размер шрифта, выравнивание и цвет текста. Если в будущем вы захотите изменить макрос, назначенный кнопке, кликните на ней правой кнопкой мыши и выберите опцию Назначить макрос.
Способ 2. Кнопка ActiveX
Кнопка ActiveX выглядит аналогично Кнопке Элемент управления формы. При этом Кнопка ActiveX имеет более гибкий функционал. Выполните следующие шаги, чтобы создать Кнопку ActiveX.
Перейдите на вкладку РАЗРАБОТЧИК. В области Элементы управления кликните кнопку Вставить, и в раскрывшемся списке выберите значок Кнопка (рис. 3). Нажмите на пиктограмму Кнопка и перетащите ее на рабочий лист. Обратите внимание, что вы находитесь в режиме конструктора.
Рис. 3. Вставка кнопки, как элемента ActiveX
Кликните на Кнопке правой кнопкой мыши, и выберите опцию Свойства. Появится окно Properties (свойства, рис. 4). Находим строку для заголовка – Caption. Удалите текст CommandButton3 [1] и наберите Выполнить! Кнопка ActiveX. Вы также можете заменить шрифт Arial на Calibri. Вы также можете изменить внешний вид кнопки с помощью таких свойств, как BackColor и ForeColor; можете добавить изображение на кнопку (свойство Picture) и т.д. Эти особенности делают элементы управления ActiveX намного более гибкими, чем элементы управления формы. Закройте окно свойств, кликнув на крестик в правом верхнем углу.
Рис. 4. Свойства Кнопки ActiveX
Оставаясь в режиме конструктора, кликните правой кнопкой мыши, и выберите опцию Исходный текст. Вы перейдете в окно редактора VBA в процедуру Private Sub CommandButton3_Click (рис. 5). В настоящий момент процедура не выполняет никакой код (она пустая). Обратите внимание, что код «живет» не в отдельном модуле, а в листе книги.
Рис. 5. Редактирование кода VBA, ассоциированного с Кнопкой ActiveX
Вы можете написать в процедуре любой код. Если вы хотите, чтобы клик на Кнопке ActiveX запускал один из существующих макросов, просто укажите его имя в тексте процедуры (рис. 6).
Рис. 6. Процедура Private Sub CommandButton3_Click будет исполнять макрос TestMacro
Вернитесь из редактора VBA назад на лист Excel. Выйдите из режима конструктора, кликнув на одноименную кнопку на ленте.
Примечание. Сам макрос TestMacro предельно прост. Он выводит на экран окно Макрос выполнен. При этом код макроса, как и положено, размещен в модуле VBA.
Sub TestMacro()
MsgBox "
Макрос выполнен"
End Sub
Способ 3. Любая фигура, картинка, рисунок SmartArt, Clip Art
Поместите объект на лист Excel. Щелкните правой кнопкой мыши на объекте и выберите команду Назначить макрос. В окне Назначить макрос объекту выберите макрос и нажмите Ok.
Способ 4. С помощью гиперссылки
Настройка макроса для запуска с помощью гиперссылки довольно сложна, но интересна. Для начала введите какой-нибудь текст в ячейку — например, Запуск макроса гиперссылкой. Затем на вкладке ВСТАВКА выберите команду Гиперссылка, и в окне Изменение гиперссылки введите адрес ячейки, в которой введен текст. В нашем примере – это В28. Это позволит при нажатии гиперссылки остаться в ячейке.
Рис. 7. Замкните гиперссылку саму на себя
Перейдите в редактор VBA. В окне проекта (VBAProject) найдите строку с листом Excel, на котором находится гиперссылка. В нашем примере лист называется Sheet1 (Рис. 1). Кликните на этой строке правой кнопкой мыши, и выберите команду View Code (рис. 8).
Рис. 8. Код для перехвата нажатия гиперссылки должен быть расположен на листе
Откроется панель кода для листа Sheet1 (Рис. 1). Если вы ранее выполняли действия, описанные выше в разделе Способ 2. Кнопка ActiveX для запуска макроса, то вверху окна будет размещено три строчки кода (см. рис. 6). Если вы не делали этого, окно будет пустым. В любом случае, воспользуйтесь двумя выпадающими меню в верхней части окна. В левом списке выберите Worksheet, в правом – FollowHyperlink. У вас появится заготовка процедуры Worksheet_FollowHyperlink перехватывающей событие Нажатие гиперссылки (рис. 9).
Рис. 9. Настройка заготовки кода путем выбора объекта – Worksheet и события – FollowHyperlink
Каждый раз, когда кто-то нажмет вашу гиперссылку, запустится эта процедура. Целевая переменная процедуры – ByVal Target As Hyperlink – обеспечит срабатывание процедуры только когда нажата ячейка с целевым текстом. Если на странице только одна гиперссылка, вы можете ограничиться простым кодом:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
TestMacro
End Sub
Если гиперссылок несколько, вы можете использовать свойство Target.TextToDisplay, чтобы различить гиперссылки:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Select Case Target.TextToDisplay
Case "
Run Report 2"
TestMacro
Case "
Run Report 2"
TestMacro2
Case "
Run Report 3"
TestMacro3
End Select
End Sub
Использование гиперссылки для запуска макроса – отличный трюк, когда вы хотите переключиться между различными состояниями. Возможно, вы хотите перейти от сортировки по возрастанию к сортировке по убыванию. Следующий макрос выполняет сортировку и изменяет текст гиперссылки так, что в следующий раз будет выполняться противоположная сортировка:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Select Case Target.TextToDisplay
Case "
A-Z"
SortMacroAscending
Target.TextToDisplay = "
Z-A"
Case "
Z-A"
SortMacroDescending
Target.TextToDisplay = "
A-Z"
End Select
End Sub
Резюме: запуск макроса кнопкой может быть выполнен с помощью элементов управления формы, элементов ActiveX, фигуры SmartArt, гиперссылки и др.
[1] В процессе написания заметки я тестировал те или иные возможности, поэтому моя кнопка имеет номер 3. Если вы выполняете операцию создания Кнопки ActiveX впервые, ваша Кнопка будет иметь имя CommandButton1
Как создать кнопку в excel для макроса
Создание кнопки в Microsoft Excel
Смотрите также выставляется ссылкаФормыУправление всеми доступными макросами она не простои VBA и файлы одни и те следующий код: с набором элементовЗакрываем редактор, и запускаем этой же книгеТеперь после нажатия на в документе.Автор: Максим Тютюшев окна. Теперь вкладка
котором желаем расположитьExcel является комплексным табличным
Процедура создания
Karataevчерез меню производится в окне, возрвращает Вас вEnd Sub справки не переводятся же действия иSub Макрос 1() для вставки. Выбираем макрос, как и (файле), но при кнопку будет выполнятьсяПосле выбора нажмите кнопкуТабличный процессор Excel вмещает
Способ 1: автофигура
разработчика будет активирована объект. Переходим во процессором, перед которым: так можно добавить
- Вид — Панели инструментов которое можно открыть предыдущее состояние, но- тело макроса, компанией Microsoft на операции в Excel.Range(«M6»).Select первый элемент ActiveX в прошлый раз. желании можно установить тот макрос, который «ОК». в себя огромное в вашей версии вкладку пользователи ставят самые на ленту кнопку
- — Формы (View с помощью кнопки и стирает последнюю т.е. команды, которые русский язык, поэтому Любая офисная работаEnd Sub – «кнопку» (в Как видим, вследствие
- хранение в новой вы указали. ТеперьНа этом создание кнопки количество опций и Excel.«Вставка» разнообразные задачи. Одной для макроса средствами — Toolbars -Макросы (Macros) записанную команду на будут выполняться при с английскими командами
- предполагает некую «рутиннуюТочно так же можно виде серого кирпичика). введенных нами изменений книге, или в вы знаете все первым способом закончено. функций, не исключаяПосле этого перемещаемся вои кликаем по
из таких задач самой программы excel Forms)на вкладке VBA.
запуске макроса. В в меню и составляющую» — одни
Способ 2: стороннее изображение
назначить макрос диаграмме, Теперь рисуем курсором была добавлена ещё
- отдельной книге макросов. три способа, как Теперь после нажатия даже возможность создания
- вкладку значку является создание кнопкиФайл —> Параметры—>НастройкаВ Excel 2007 иРазработчик (Developer)Чтобы включить запись необходимо: данном случае макрос окнах придется смириться: и те же объектам WordArt, SmartAtr. кнопку необходимого размера. одна ячейка с
- Мы оставим значение сделать кнопку в по ней вы кнопки. На первый«Разработчик»«Рисунок» на листе, нажатие ленты —>Выбрать команды новее — откройтеили — вв Excel 2003 и
- выделяет ячейку заливаетМакросы (т.е. наборы команд еженедельные отчеты, одниДля показательного примера создайтеКнопка – элемент управления данными. Она также по умолчанию. Excel. будете переходить на
- взгляд абсолютно ненужный. Щелкаем по кнопке, который расположен на на которую запускало —>Макросы—> выберите макрос—>справа выпадающий список старых версиях Excel старше — выбрать выделенных диапазон (Selection) на языке VBA) и те же тестовую таблицу как формы. Снова переходим была включена в
- В самом нижнем полеВот мы и рассмотрели другой лист в элемент некоторым пользователям«Вставить» ленте в блоке бы определенный процесс. выберите или создайтеВставить (Insert) — через меню в меню желтым цветом (код хранятся в программных
действия по обработке на рисунке: на вкладку «Разработчик».
Excel кнопка для макроса
Назначение макроса форме или кнопке управления
Смотрите такжеМакросы книги. или графическому элементувведите любую строчную макрос, который сначала скопировать в другуюВ поле обновляет таблицу в ко всем адресам.кнопку Microsoft OfficeВсе открытые книги кнопке междуНастраиваемый значок мыши. клавишу F1, чтобыв группеПримечание:. Тут должен появитьсяSerge_007На листе щелкните правой
или прописную букву. обновляет таблицу в книгу с помощьюОписание Excel, а затем единый формат. МакросНа вкладке, а затем —.SubMouseIcon (форма) отобразить раздел справкаэлементы управления Мы стараемся как можно список доступных макросов,: кнопкой мыши объект, Рекомендуется использовать сочетания Excel, а затем редактора Microsoft Visualпри необходимости введите
открывает Outlook для
|
сделать это за
|
Разработчик кнопкуПримечание:иТип указателя, отображаемого при
по Visual Basic.нажмите кнопку оперативнее обеспечивать вас
но он не
Vostok рисунка, фигуры или клавиш, которые еще открывает Outlook для Basic. краткое описание действий
ее отправки по вас. Запись макроса,в группеПараметры Excel Если макрос, который нужно
Добавление кнопки (элемента управления формы)
-
End Sub наведении пользователем указателя Можно также ввестиВставить актуальными справочными материалами появляется, cвои вкладки и элемент, к которому
не назначены другим ее отправки поНазначение макроса объекту, фигуре
-
макроса. электронной почте. применив нужный форматкод. назначить элементу управления,линии выполните одно
-
мыши на определенный имя свойства ви в группе на вашем языке.
-
Когда я просто группы можно создавать нужно назначить существующий командам, та
Как сделать кнопку для запуска своего макроса?
В данной статье я расскажу, как сделать кнопку для запуска своего макроса.
Файл | Описание | Размер файла: | Скачивания |
---|---|---|---|
Пример | 14 Кб | 1391 |
Давайте возьмем файл с предварительно записанным макросом или запишем новый макрос, как это сделать описано в статье «Как записать макрос не зная языка VBA?».
Чтобы вставить в рабочий лист Кнопку, необходимо настроить (включить) вкладку «Разработчик» на ленте главного меню (Как добавить вкладку «Разработчик» на ленту?).
После того как необходимый инструмент в качестве вкладки «Разработчик» добавлен, можно приступать к созданию кнопки, которая будет запускать наш макрос.
Переходим на страницу, на которой будем размещать кнопку, в главном меню во вкладке «Разработчик» нажимаем кнопку «Вставить», в выпавшем списке выбираем команду «Кнопка (элемент управления формы)»
После чего наш курсор мышки превратиться в крестик, наводим его на то место, в которое хотим вставить нашу Кнопку, нажимаем левую клавишу мыши:
Откроется диалоговое окно «Назначить макрос объекту»:
В этом окне выбираем наш макрос и нажимаем «ОК»:
Диалоговое окно закроется, а в указанном нами месте на листе появиться кнопка:
Щелкните по любой ячейке левой клавишей мышки, с кнопки снимется выделение:
Щелкните левой клавишей мышки по кнопке — макрос выполниться:
Чтобы макрос выполнялся по нажатию определенных клавиш, читайте статью «Как назначить макросу сочетание клавиш?»
Добавить комментарий
Назначить горячие клавиши макросу в «Word» и «Excel»
Иногда, написанный макрос для книги «Excel» или «Word» требуется вызывать не нажатием активной кнопки или другим макросом, а вызывать работу макроса сочетанием назначенных пользователем горячих клавиш.
Проще всего макрос закрепляется за горячими клавишами в «Excel».
Для назначения кнопкам макроса достаточно последовательно выполнить следующие действия:
Действие первое:
Войти в книгу макросов и выбрать (выделить) нужный нам макрос левой кнопкой мыши.
Действие второе.
Кликнув по кнопке «Параметры» вызвать меню настройки параметров.
Действие третье.
В меню параметров прописать нужные горячие клавиши на выполнение макроса и нажать кнопку «Ok».
В программе «Word» назначить (закрепить) клавишу клавиатуры за макросом немного сложнее.
Для назначения макросу горячих клавиш придется выполнить следующую последовательность действий:
Действие первое.
Вызвать контекстное меню кликнув правой кнопкой мыши по панели быстрого доступа.
Действие второе.
Выбрать в появившимся меню «Настройка ленты»
Действие третье.
В появившемся окне настроек выбрать «Сочетание клавиш «Настройка…»»
Действие четвертое.
В разделе «Категории» открывшегося окна выбрать категорию «Макросы». В соседнем разделе выделить мышью нужный макрос.
Действие пятое.
В поле «Новое сочетание клавиш» внести сочетание клавиш для запуска макроса и нажать «Ок».
Теперь макрос будет закреплен за указанным сочетанием горячих клавиш.
Вопросы можно задавать в комментариях к статье или на форуме сайта.
VBA Excel. Элемент управления CommandButton (кнопка)
Элемент управления пользовательской формы CommandButton, используемый в VBA Excel для запуска и макросов. Свойства кнопки, примеры кода с ней.
Элемент управления CommandButton
UserForm.CommandButton — это элемент управления пользовательской формы, предназначенный исключительно для запуска и процедур VBA Excel.
Для запуска процедур и макросов обычно используется событие кнопки — Click.
Свойства элемента CommandButton
Свойство | Описание |
Автоматический размер | Автоподбор размера кнопки. True — размер автоматически подстраивается под длину введенной надписи (заголовка). False — размер элемента управления определяет свойства Ширина и Высота. |
Цвет задней панели | Цвет элемента управления CommandButton. |
Подпись | Надпись (заголовок) — текст, отображаемый на кнопке. |
ControlTipText | Текст всплывающей подсказки при наведении курсора на кнопку. |
Включено | Возможность взаимодействия пользователя с системой управления CommandButton. True — взаимодействие включено, False — отключено (цвет надписи становится серым). |
Шрифт | Шрифт, начертание и размер текста надписи. |
Высота | Высота элемента управления. |
Левый | Расстояние от левого края внутренней границы пользовательской формы до левого края элемента управления. |
Изображение | Добавление изображения вместо заголовка или к нему. |
Изображение Позиция | Выравнивание изображения и текста на кнопке. |
TabIndex | Описание позиции элемента управления в очереди получения фокуса при табуляции, вызываемой нажатием клавиш «Tab», «Enter».Отсчет начинается с 0. |
Верх | Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края элемента управления. |
видимый | Видимость элемента управления CommandButton. True — отображается на пользовательской форме, False — скрыт. |
Ширина | Ширина элемента управления. |
WordWrap | Перенос текста заголовка на новую строку при достижении ее границы. True — перенос включен, False — перенос выключен. |
В таблице только основные, часто используемые свойства кнопки. Все доступные свойства отображены в окне Свойства элемента управления CommandButton.
Пример кнопки с надписью и изображение
Примеры кода VBA Excel с помощью кнопки
Изначально для реализации примеров на пользовательскую форму UserForm1 добавлена кнопка CommandButton1.
Пример 1
Изменение цвета и надписи кнопки при наведении на нее курсора.
Условие пример 1
- Действия при загрузке формы: замена заголовка формы по умолчанию на «Пример 1», замена надписи кнопки по умолчанию на «Кнопка», запись цвета кнопки по умолчанию в переменную уровень модуля.
- Сделать, чтобы при наведении курсора на кнопку, она изменяла цвет на зеленый, а надпись «» менялась на надпись «Нажми!»
- Добавление кода VBA Excel, который будет при удалении курсора с кнопки возвращать ей первоначальные настройки: цвет по умолчанию и надпись «Кнопка».
Решение Пример 1
1. Объявляем в разделе Объявления модуля пользовательской формы (в самом начале модуля, до процедур) переменную myColor:
2. Загружаем пользовательскую форму с заданными:
Частная подпрограмма UserForm_Initialize () Me.Caption = «Пример 1» С CommandButton1 myColor = .BackColor .Caption = «Кнопка» End With End Sub |
3. Меняем цвет и надпись кнопки при наведении на нее курсора мыши:
Private Sub CommandButton1_MouseMove (ByVal _ Button as Integer, ByVal Shift as Integer, _ ByVal X как Single, ByVal Y как Single) With CommandButton1 .BackColor = vbGreen .Caption = «Нажми!» Конец с Концевой переводник |
4. Возвращаем цвет и надпись кнопки при удалении с нее курсора мыши:
Private Sub UserForm_MouseMove (ByVal _ Button as Integer, ByVal Shift as Integer, _ ByVal X как Single, ByVal Y как Single) With CommandButton1 .BackColor = myColor .Caption = «Кнопка» End With End Sub |
Все процедуры размещаются в модуле пользовательской формы. Переменная myColor объявляется на уровне модуля, так как она используется в двух процедурах.
Пример 2
Запуск кода, размещенного внутри процедур обработки событий Щелкните элемент управления CommandButton:
Частная подписка CommandButton1_Click () MsgBox «Код внутри обработки событий Click» End Sub |
Пример 3
Запуск внешней процедуры из процедур обработки события. Щелкните элемент управления CommandButton.
Внешняя процедура, размещенная в стандартном модуле проекта VBA Excel:
Sub Test () MsgBox «Запуск внешней процедуры» End Sub |
Вызов внешней процедуры из кода обработки события Нажмите
- с ключевым словом Звонок:
Частная подпрограмма CommandButton1_Click () Проверка вызова Конечная подпрограмма |
- без ключевого слова Позвонить:
Частная подпрограмма CommandButton1_Click () Тест Конечная подпрограмма |
Строки вызова внешней процедуры с ключевым словом Call и без него — равнозначны.На вызове слово можно ориентироваться как на подсказку, которая указывает на то, что эта строка вызывает внешнюю жизнь.
.
Программное добавление кнопок на лист Excel
Надстройка для загрузки кнопок запуска макроса на лист Excel
.
макросы мне приходится писать их очень часто, рисование кнопок запуска отнимает достаточно много времени.
Решением стало создание этой надстройки — теперь достаточно диапазон диапазона ячеек на листе Excel , нажмите комбинацию клавиш типа Alt + 1 , — и через мгновение на листе создаётся зелёная кнопка с названием «Запуск», расположенная точно поверх ранее выделенных ячеек.Остаётся только назначить эту кнопку макроса, щелкнув по ней правой клавишей мыши.
Пример кода VBA для создания кнопки:
Sub ПримерИспользования () СоздатьКнопку Selection, vbGreen, "Обработать данные": End Sub Концевой переводник
Для вызова формы (где можно настроить текст и цвет будущей кнопки) эта комбинация клавиш Ctrl + Alt + Shift + B
Код функции добавления кнопок на лист Excel:
Функция СоздатьКнопку (ByRef ra As Range, Optional ByVal ButtonColor As Long = 255, _ Необязательный ByVal ButtonName $ = "Запуск", Необязательный ByVal MacroName As String = "") Функция рисует автофигуру (прямоугольник) поверх диапазона ячеек ra 'и окрашивает созданную кнопку (с названием) в цвет Button_color 'Созданной кнопке назначается макрос MacroName При ошибке Возобновить следующий: Err.Очистить w = ra.Ширина: h = ra.Height: l = ra.Left: t = ra.Top w = IIf (w> = 10, w, 50): h = IIf (h> = 10, h, 50) 'не создаём маленькие кнопки - минимум 10 * 10 'добавляем кнопку на лист Dim sha As Shape: Установите sha = ActiveSheet.Shapes.AddShape (msoShapeRoundedRectangle, l, t, w, h) С sha 'оформляем автофигуру .Fill.Visible = msoTrue: .Fill.Solid .Fill.ForeColor.RGB = Цвет кнопки: .Fill.Transparency = 0,3 .Fill.BackColor.RGB = vbWhite .Заполнить.TwoColorGradient msoGradientFromCenter, 2 'градиентная заливка .Adjustments.item (1) = 0,23: .Placement = xlFreeFloating .OLEFormat.Object.PrintObject = False 'кнопки не выводятся на печать .Line.Weight = 0,25: .Line.ForeColor.RGB = vbBlack 'делаем тонкий черный контур With .TextFrame 'добавляем и форматируем текст .Characters.Text = ButtonName $ 'добавляем текст С .Characters.Font изменяем начертание текста .Size = IIf (h> = 16, 10, 8):. Полужирный шрифт = True: .Color = vbBlack: .Name = "Arial" 'цвет и шрифт Конец с .HorizontalAlignment = xlCenter: .VerticalAlignment = xlVAlignCenter Конец с .onaction = MacroName 'назначаем кнопке макрос (если он задан в параметрах) Конец с Конечная функция
.