Как создать кнопку для вызова макроса на листе?
После создания макроса часто возникает вопрос: а как его теперь запустить? Можно, конечно, нажать сочетание клавиш Alt+F8 и выбрать нужный макрос, но...Во-первых это не всегда удобно, особенно если макросов больше 5-ти. Во-вторых: если файлом с макросом будут пользоваться другие люди, не умеющие всего этого делать, придется объяснять им все это, что тоже не очень здорово - многие просто будут вспоминать Вас не очень хорошими словами :-)
Но к нашему общему счастью в Excel есть замечательная возможность создавать элементы, с помощью которых можно вызвать макрос просто нажатием на них. Кроме того это можно сделать еще и красиво. В данной статье я опишу как можно сделать красивые и не очень кнопки на листе для вызова имеющихся у Вас макросов.
Итак, ниже на рисунке Вы можете видеть четыре варианта кнопочек для вызова макроса.
Данная кнопка считается устаревшей и не рекомендуется к использованию. Вот одна из причин, почему лично я не использую такие кнопки в своих проектах: Элементы ActiveX перестали работать или ведут себя непредсказуемо. Т.е. создав такую кнопку, можно заранее готовиться к тому, что в какой-то момент кнопка просто перестанет работать.
Однако многие все же предпочитают использовать именно её(либо не знают, что можно по-другому), даже не смотря на то, что назначить для этой кнопки макрос кому-то покажется сложнее, чем для остальных рассматриваемых в данной статье.
Как создать кнопку ActiveX:
В версии Excel 2007 и выше доступ к этим элементам возможен с вкладки Разработчик (Developer):
Отобразить вкладку Разработчик (Developer) (если еще не отображена)
Excel 2007: Параметры Excel(Excel Options)- Основные(Popular)- галочка напротив Показывать вкладку Разработчик на ленте(Show Developer Tab on Ribbon)
Excel 2010: Файл (File)- Параметры (Options)- Настройка ленты (Customize Ribbon)- галочка напротив Разработчик (Developer)
Теперь переходим на эту вкладку и видим команду Вставить (Insert). Жмем и у нас выпадает меню с возможностью выбрать элементы:
В категории "Элементы ActiveX" выбираем самый первый(это серенький кирпичик). Курсор приобретет вид тоненького крестика. Теперь нам надо на листе нарисовать кнопку. Все, наша кнопка готова.Для обладателей версии Excel 2003 не намного все проще. Сначала необходимо отобразить панель инструментов Элементы управления. Делается это следующим образом: правая кнопка мыши на панели меню- Настройка- вкладка Панели инструментов
На данной панели так же выбираем серенький кирпичик и рисуем кнопку.Теперь осталось назначить созданной кнопке макрос. Для этого, не выходя из режима конструктора (в Excel 2007 он на вкладке Разработчик (Developer), а в Excel 2003 на панели Visual Basic -), производим двойной щелчок по созданной кнопке - Excel перейдет в режим редактирования кода из интерфейса VBA и автоматом будет создана пустая процедура: Private Sub CommandButton1_Click(). CommandButton1 - это имя нашей кнопки. У Вас оно может отличаться. Теперь внутрь процедуры мы вписываем строку вызова макроса - Call Макрос1. Вместо Макрос1, естественно, имя необходимого макроса.
Private Sub CommandButton1_Click() Call Макрос1 End Sub
А вот на этом, пожалуй, все для данного элемента.
Для остальных элементов принцип назначения макроса одинаков, а поэтому сначала рассмотрим создания каждого из них, а после уже способ назначения макроса
Здесь чуть проще. Для того, чтобы добавить данный элемент на лист для начала придется выполнить примерно те же действия, что и для создания кнопки ActiveX.
После создания фигуры можно кликнуть по ней правой кнопкой мыши, выбрать Формат фигуры и изменить там оформление фигуры: цвет заливки, прозрачность, обводку и еще разные опции - здесь все зависит от фантазии.
Для Кнопки элемент управления формы, Автофигуры и Рисунка процедура назначения макроса совершенно одинакова: жмем правой кнопкой мыши на элементе управления формы, фигуре или картинке - Назначить макрос.
Появится диалоговое окно выбора макросов. Выбираете нужный и жмете Ок. Все, наша кнопка готова и по её нажатии выполняется выбранный нами макрос.
рис.1
Таким же образом можно назначить макрос не только указанным элементам, но и Диаграмме, элементу Надпись, обекту WordArt, рисунку SmartArt.
Статья помогла? Поделись ссылкой с друзьями!
Поиск по меткам
Access apple watch Multex Power Query и Power BI VBA управление кодами Бесплатные надстройки Дата и время Записки ИП Надстройки Печать Политика Конфиденциальности Почта Программы Работа с приложениями Разработка приложений Росстат Тренинги и вебинары Финансовые Форматирование Функции Excel акции MulTEx ссылки статистикаКомментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме - добро пожаловать на Форум
Спасибо большое за данную статью, на начальном этапе обучения написания макросов и создания кнопок очень помогла.
Спасибо за статью. Но у меня возникла одна проблема в использовании кнопок при защите листа. Кнопка станговится недоступной - программа ругается и просит снять защиту. Снял защиту в свойствах объекта при его выделении. Снимал я защиту и в свойствах ячейки на месте коорой расположена кнопка, но видимо элементы управления не привязаны к ним. Помогите разрешить эту проблему.
Олег, Вы когда защиту устанавливаете обратите внимание на параметры. Там есть пункт: изменение объектов. Надо напротив него поставить галочку и тогда можно будет использовать объект.
всё это сделал, всё равно выдаёт ошибку такого содержания:
Microsoft Visual Basic :
Run-time error "1004" Ячейка или диаграмма защищена от изменений. Чтобы изменить защищаемую ячейку , снимите защиту при помощи "Снять защиту листа"...
И круг замкнулся. Что делать дальше, не знаю
Олег, а нельзя было сразу написать, что Вы это все макросом делаете? Какое вообще отношение имеет Ваш вопрос именно к этой теме? Смотрите темуКак защитить лист от пользователя, но не от макроса?
Когда нажал Debug в предложенном меню, высвечивается жёлтым строка, на которой всё замыкается в макросе (если я правильно это понимаю ввиду моего слишком малого опыта).
Это строка: ... ActiveWorkbook.RefreshAll
Range("A1").Select
End Sub
Олег, специально для Вас ниже формы написания комментариев есть строки красным шрифтом. Советую следовать тому, что там напиано.
Статью я прочитал. Не слишком она мне помогла в решении этого вопроса.
Моё понимание, что вопрос относится к этой теме из-за того, что создав кнопку не получил от неё необходимой функциональности при наложении защиты на лист. А значит вопрос создания её для меня не был решён.
Потому и попросил у Вас помощи.
Привожу цитату из Вашей статьи, Дмитрий: После создания макроса часто возникает вопрос: а как его теперь запустить?
Так ли уж мои вопросы не по теме? И так ли уж они бесполезны для других?
...
Спасибо Вам, что хоть вообще откликнулись.
Всего Вам доброго. Простите за потраченное на меня время.
Олег, мы будем сейчас спорить? За уши к любой статье можно притянуть любой вопрос. Почти в каждой статье у меня упоминается слово Excel. Следуя Вашей логике к любой статье можно создать комментарий по Excel - ведь упоминается же!
Ваш вопрос к теме не относится. Ваш вопрос относится к теме о защите листа, куда я Вас и направил. Давайте уважать друг друга и следовать советам. Не хотите обсуждать свою проблему в форуме или в статье, к которой это больше имеет отношение - это Ваше дело.
И еще раз повторяю - главное в Вашей проблеме - это грамотно поставить защиту.