Как запустить макрос в Excel

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

Во-первых: убедитесь, что макросы включены

Функции безопасности Excel по умолчанию отключают макросы. При открытии книги с поддержкой макросов пользователям обычно предлагается включить макросы.

Если вы не можете запускать макросы, попробуйте выполнить следующие инструкции:

  • Сохраните книгу
  • Закройте книгу, затем откройте ее снова
  • Когда книга загрузится, вы увидите Предупреждение безопасности подсказка (на фото ниже). Нажмите Включить контент.

Запуск макроса из списка макросов

Список макросов доступен на вкладке «Просмотр». Чтобы просмотреть этот список:

  • Выберите Вид вкладка
  • Нажмите кнопку с надписью Макросы открыть список макросов

  • Выберите макрос, который вы хотите запустить, из списка, затем щелкните значок Запустить кнопка

Вы также можете отобразить список макросов в любое время, нажав ALT + F8.

Запуск макроса с помощью сочетания клавиш

Вы можете назначить сочетание клавиш для часто используемого макроса в виде CTRL + или CTRL + SHIFT +. Сделать это:

  • Вызовите список макросов (Вид > Макросы, или ALT + F8)
  • Выберите макрос, к которому вы хотите применить ярлык
  • Нажмите Параметры… показать Параметры макроса поддиалог

  • В текстовом поле под Быстрая клавиша, введите одну букву и нажмите Ok. Если вы удерживаете клавишу SHIFT при вводе буквы, метка рядом с полем будет отображать SHIFT как часть ярлыка.

ПРИМЕЧАНИЕ: настоятельно рекомендуется использовать SHIFT при создании сочетания клавиш! Excel использует для себя сочетания клавиш CTRL +, например CTRL + C для копирования или CTRL + V для сохранения. Если вы создаете ярлык макроса с помощью этих или других ярлыков Excel, вы будете перезаписывать ярлык Excel, пока не повторно назначите ярлык макроса.

Запуск макроса из редактора VB

Макросы также можно запускать из редактора VB. Редактор VB позволяет просматривать код макроса и вносить необходимые изменения перед его запуском.

Чтобы запустить макрос в редакторе VB:

  • Откройте редактор VB (вкладка Разработчик> Visual Basic или ALT + F11)

  • в Проект окна, дважды щелкните модуль, содержащий макрос, который вы хотите протестировать
  • В окне кода модуля поместите курсор в любом месте кода макроса между Sub и End Sub
  • Щелкните значок Запустить на панели инструментов или нажмите сочетание клавиш F5

Запуск макроса с помощью кнопки или фигуры

Часто бывает полезно иметь элемент управления на листе, который пользователь может щелкнуть, чтобы запустить макрос, например элемент управления Button или Shape. Для конечных пользователей это намного быстрее, чем открывать списки макросов или копаться в коде макросов в редакторе VB.

Информацию о том, как создать интерактивную кнопку или фигуру, можно найти здесь: Добавить кнопку и назначить макрос в Excel.

Автоматический запуск макроса с использованием событий в VBA

Можно запустить макрос, когда что-то происходит в Excel, например, когда открывается книга или когда изменяется значение ячейки. Они называются События, и вы можете написать код VBA, чтобы они вызывали макросы или выполняли другие операции.

Чтобы написать код для события, вам понадобится VB Editor. Например, чтобы просмотреть события для книги:

  • Откройте редактор VB (ALT + F11)
  • Дважды щелкните значок ThisWorkbook объект в редакторе VB Окно проекта
  • Выберите «Рабочая книга» из раскрывающегося списка в верхнем левом углу окна кода.
  • Щелкните раскрывающийся список справа, чтобы просмотреть список событий.

Ниже приведен небольшой, но полезный образец событий Excel, из которых вы можете запускать макросы.

Workbook_Open ()

Событие Workbook_Open () запускается при открытии книги. Если вы получаете предупреждение системы безопасности после открытия книги, это событие запускается после нажатия кнопки «Включить содержимое».

12345 Частная вспомогательная книга_Open ()MsgBox "Рабочая тетрадь открыта!"Конец подписки

Workbook_BeforeClose (Отменить как логическое)

Workbook_BeforeClose () срабатывает, когда пользователь пытается закрыть книгу. Это происходит до того, как будут выполнены какие-либо проверки, чтобы увидеть, нужно ли сохранять книгу.

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

123456789 Private Sub Workbook_BeforeClose (Отменить как логическое)Если MsgBox («Вы уверены?», VbYesNo + vbQuestion, «Close») = vbNo ТогдаОтмена = ИстинаКонец, еслиКонец подписки

Worksheet_Change (значение ByVal как диапазон)

Worksheet_Change () срабатывает при изменении значения ячейки - независимо от того, было ли оно изменено макросом, операцией копирования / вставки или внешней ссылкой. Однако он не срабатывает, когда значение пересчитывается по формуле.

В Цель Параметр представляет ячейки, значение которых изменилось.

Если вы измените значение других ячеек внутри этого события, событие сработает снова. Это может вызвать бесконечный цикл. Если вам нужно изменить значения ячеек без запуска этого события, рассмотрите возможность установки Application.EnableEvents к Ложь сначала, а затем установите его обратно на Правда в конце процедуры мероприятия.

123456789 Private Sub Worksheet_Change (значение ByVal как диапазон)MsgBox "Ячейки изменены:" & Target.AddressApplication.EnableEvents = FalseДиапазон ("A2"). Значение = Диапазон ("A2"). Значение + Target.Cells.CountApplication.EnableEvents = TrueКонец подписки

Worksheet_SelectionChange (значение ByVal как диапазон)

Это событие срабатывает всякий раз, когда прицельной сеткой выбираются разные ячейки. Параметр Target представляет новые выбранные ячейки.

Вы также можете вызвать это событие с помощью кода, например «Диапазон (« A1 »). Выбрать». Как и в случае с Worksheet_Change (), вы должны быть осторожны при выборе других ячеек внутри этого события, поскольку вы можете вызвать бесконечный цикл. Используйте Application.EnableEvents.

123456789 Private Sub Worksheet_SelectionChange (значение ByVal как диапазон)Если Target.Address = "$ A $ 1", тоMsgBox «Курсор в исходном положении».Конец, еслиКонец подписки

Остановить запущенный макрос

Выполняющийся макрос можно прервать, нажав ESC или CTRL + BREAK. По умолчанию прерванный макрос покажет следующий диалог:

Щелкнув Конец остановит макрос, а Продолжать возобновит это. Щелкнув Отлаживать откроет макрос в редакторе VB и выделит строку кода, выполнение которой было приостановлено. (Внутри редактора VB вы можете остановить или возобновить выполнение макроса с помощью кнопок «Выполнить» или «Завершить» на панели инструментов.)

Application.EnableCancelKey

Вы можете отключить возможность остановки макроса с помощью ESC или CTRL + BREAK, установив Application.EnableCancelKey имущество. Это свойство имеет три возможных значения:

  • xlInterrupt - это значение по умолчанию, которое заставляет Excel отображать диалоговое окно выше
  • xlDisabled - убирает возможность останавливать запущенный макрос
  • xlErrorHandler - при попытке прерывания выдается ошибка, которую можно обработать в коде

Когда выполнение кода останавливается, Excel всегда сбрасывает значение Application.EnableCancelKey обратно на xlInterrupt.

Хорошая причина использовать это свойство - безопасность. Например, если у вас есть макрос, который временно незащищает части вашей книги, пользователь потенциально может остановить макрос сразу после снятия защиты и получить доступ к контенту, который вы им не предназначались. Установив Application.EnableCancelKey, вы можете полностью отключить их возможность делать это или аккуратно обработать их прерывание с помощью обработчика ошибок, который повторно защищает книгу.

1234567891011 Sub UpdateBaseData (ByVal NewData как диапазон, ByVal Target как диапазон)Application.EnableCancelKey = xlDisabledTarget.Worksheet.Unprotect "MyPassword"NewData.Copy TargetTarget.Worksheet.Protect «MyPassword»Application.EnableCancelKey = xlInterruptКонец подписки

Принудительно закрыть Excel с помощью диспетчера задач Windows

Если макрос «завис» или Excel стал слишком занят, чтобы подтвердить попытку прерывания, вам может потребоваться принудительно закрыть сам Excel с помощью Диспетчер задач Windows. (ПРИМЕЧАНИЕ: если вы сделаете это, вы можете потерять любую несохраненную работу, и вам придется полагаться на версию вашей книги с автоматическим восстановлением.)

  • Откройте диспетчер задач напрямую, используя CTRL + SHIFT + ESC
  • Выберите «ПроцессыВкладка
  • Разверните элемент «Microsoft Excel», чтобы отобразить все книги.
  • Выберите книгу, которую хотите закрыть, затем щелкните Завершить задачу в правом нижнем углу

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave