Lost your password?


Хитрости »
Основные понятия (25)
Сводные таблицы и анализ данных (10)
Графики и диаграммы (5)
Работа с VB проектом (12)
Power BI и Power Query (18)
Условное форматирование (5)
Списки и диапазоны (5)
Макросы(VBA процедуры) (67)
Разное (42)
Баги и глюки Excel (4)

Как создать кнопку для вызова макроса на листе?

 

После создания макроса часто возникает вопрос: а как его теперь запустить? Можно, конечно, нажать сочетание клавиш Alt+F8 и выбрать нужный макрос, но...Во-первых это не всегда удобно, особенно если макросов больше 5-ти. Во-вторых: если файлом с макросом будут пользоваться другие люди, не умеющие всего этого делать, придется объяснять им все это, что тоже не очень здорово - многие просто будут вспоминать Вас не очень хорошими словами :-)

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

Итак, ниже на рисунке Вы можете видеть четыре варианта кнопочек для вызова макроса.


Кнопка элемент 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.
Для пользователей 2007 Excel и выше отобразить вкладку Разработчик (Developer) на ленте(если еще не отображена). Только выбор кнопки теперь надо делать из первой группы - Элементы управления форм.
для пользователей 2003 сначала надо добавить панель инструментов Формы: правая кнопка мыши на панели- Настройка- вкладка Панели инструментов. Жмем на первый элемент - серенький кирпичик. Рисуем. Как только Вы нарисуете кнопку появится меню с просьбой назначить макрос на кнопку(рис.1). Вы можете сделать это сразу, либо позже.


Автофигура
Для пользователей Excel 2007-2010: вкладка Вставка (Insert)-Фигуры (Shapes). Просто выбираете любую понравившуюся фигуру.
Для пользователей Excel 2003 для начала необходимо отобразить панель инструментов Рисование, как было описано выше. Там выбрать пункт Автофигуры и выбрать из категории понравившуюся фигуру.
После создания фигуры можно кликнуть по ней правой кнопкой мыши, выбрать Формат фигуры и изменить там оформление фигуры: цвет заливки, прозрачность, обводку и еще разные опции - здесь все зависит от фантазии.


Рисунок
для пользователей Excel 2007: вкладка Вставка (Insert)-Рисунок (Picture). Выбираете любой рисунок из имеющихся на компьютере.
Для пользователей 2003 сначала необходимо отобразить панель инструментов Рисование(если не отображена). Далее жмем на кнопку Добавить рисунок из файла .


как назначить макрос
Для Кнопки элемент управления формы, Автофигуры и Рисунка процедура назначения макроса совершенно одинакова: жмем правой кнопкой мыши на  элементе управления формы, фигуре или картинке - Назначить макрос.

Появится диалоговое окно выбора макросов. Выбираете нужный и жмете Ок. Все, наша кнопка готова и по её нажатии выполняется выбранный нами макрос.
рис.1

Таким же образом можно назначить макрос не только указанным элементам, но и Диаграмме, элементу Надпись, обекту WordArt, рисунку SmartArt.


Статья помогла? Поделись ссылкой с друзьями!
  Плейлист   Видеоуроки

Поиск по меткам

Access apple watch Multex Power Query и Power BI VBA управление кодами Бесплатные надстройки Дата и время Записки ИП Надстройки Печать Политика Конфиденциальности Почта Программы Работа с приложениями Разработка приложений Росстат Тренинги и вебинары Финансовые Форматирование Функции Excel акции MulTEx ссылки статистика
Обсуждение: 31 комментарий
  1. Алексашкин Алексей:

    Спасибо большое за данную статью, на начальном этапе обучения написания макросов и создания кнопок очень помогла.

  2. Олег Усатов:

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

  3. Олег, Вы когда защиту устанавливаете обратите внимание на параметры. Там есть пункт: изменение объектов. Надо напротив него поставить галочку и тогда можно будет использовать объект.

  4. Олег Усатов:

    всё это сделал, всё равно выдаёт ошибку такого содержания:

    Microsoft Visual Basic :
    Run-time error "1004" Ячейка или диаграмма защищена от изменений. Чтобы изменить защищаемую ячейку , снимите защиту при помощи "Снять защиту листа"...
    И круг замкнулся. Что делать дальше, не знаю

  5. Олег, а нельзя было сразу написать, что Вы это все макросом делаете? Какое вообще отношение имеет Ваш вопрос именно к этой теме? Смотрите тему Как защитить лист от пользователя, но не от макроса?

  6. Олег Усатов:

    Когда нажал Debug в предложенном меню, высвечивается жёлтым строка, на которой всё замыкается в макросе (если я правильно это понимаю ввиду моего слишком малого опыта).
    Это строка: ... ActiveWorkbook.RefreshAll
    Range("A1").Select
    End Sub

  7. Олег, специально для Вас ниже формы написания комментариев есть строки красным шрифтом. Советую следовать тому, что там напиано.

  8. Олег Усатов:

    Статью я прочитал. Не слишком она мне помогла в решении этого вопроса.
    Моё понимание, что вопрос относится к этой теме из-за того, что создав кнопку не получил от неё необходимой функциональности при наложении защиты на лист. А значит вопрос создания её для меня не был решён.
    Потому и попросил у Вас помощи.

  9. Олег Усатов:

    Привожу цитату из Вашей статьи, Дмитрий: После создания макроса часто возникает вопрос: а как его теперь запустить?
    Так ли уж мои вопросы не по теме? И так ли уж они бесполезны для других?
    ...
    Спасибо Вам, что хоть вообще откликнулись.
    Всего Вам доброго. Простите за потраченное на меня время.

  10. Олег, мы будем сейчас спорить? За уши к любой статье можно притянуть любой вопрос. Почти в каждой статье у меня упоминается слово Excel. Следуя Вашей логике к любой статье можно создать комментарий по Excel - ведь упоминается же!
    Ваш вопрос к теме не относится. Ваш вопрос относится к теме о защите листа, куда я Вас и направил. Давайте уважать друг друга и следовать советам. Не хотите обсуждать свою проблему в форуме или в статье, к которой это больше имеет отношение - это Ваше дело.
    И еще раз повторяю - главное в Вашей проблеме - это грамотно поставить защиту.

Поделитесь своим мнением

Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме - добро пожаловать на Форум


Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Тренинги

Заказать
Юридическая информация

Использование материалов сайта

Политика Конфиденциальности

ИП Щербаков Дмитрий Валентинович
ОГРНИП: 318502700083307
ИНН: 504013350772

Наши партнеры

Перейти
Перейти

Счетчики

Рейтинг@Mail.ru Яндекс.Метрика
© 2021 Excel для всех   Войти