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

  • Поделись Этим
Michael Brown

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

Макросы - это отличный способ автоматизации повторяющихся задач в Excel. Если вы снова и снова делаете одно и то же, запишите свои действия в виде макроса и назначьте ему сочетание клавиш. И теперь все записанные действия будут выполняться автоматически, одним нажатием клавиши!

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

    Как и другие инструменты VBA, макросы Excel располагаются на компьютере. Разработчик Вкладка "Разработчик", которая по умолчанию скрыта. Поэтому первое, что вам нужно сделать, это добавить вкладку "Разработчик" на ленту Excel.

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

    1. На Разработчик во вкладке Код группу, нажмите кнопку Макрос записи кнопка.

      В качестве альтернативы нажмите кнопку Макрос записи кнопка в левой части Статус бар:

      Если вы предпочитаете работать с клавиатурой, а не с мышью, нажмите следующую последовательность клавиш Alt , L , R (по очереди, а не все клавиши одновременно).

    2. В Макрос записи В появившемся диалоговом окне настройте основные параметры макроса:
      • В Макро имя В поле введите имя макроса. Постарайтесь сделать его осмысленным и описательным, чтобы в дальнейшем вы могли быстро найти макрос в списке.

        В именах макросов можно использовать буквы, цифры и знаки подчеркивания; первый символ должен быть буквой. Пробелы не допускаются, поэтому имя должно быть однословным и начинаться с заглавной буквы (например. MyFirstMacro ) или разделять слова подчеркиванием (например. Мой_первый_макрос ).

      • В Клавиша быстрого доступа введите любую букву, чтобы назначить макросу комбинацию клавиш (необязательно).

        Допускается использование как заглавных, так и строчных букв, но лучше использовать комбинации клавиш в верхнем регистре (Ctrl + Shift + буква), поскольку сочетания клавиш макроса отменяют все стандартные сочетания клавиш Excel, пока открыта рабочая книга, содержащая макрос. Например, если вы назначите Ctrl + S для макроса, вы потеряете возможность сохранять файлы Excel с помощью сочетания клавиш. Назначение Ctrl + Shift + S сохранит возможность сохранения файлов Excel с помощью сочетания клавиш.стандартный ярлык сохранения.

      • Из Сохраните макрос в в раскрывающемся списке выберите место хранения макроса:
        • Рабочая тетрадь по персональному макросу - сохраняет макрос в специальной рабочей книге под названием Персональный.xlsb Все макросы, сохраненные в этой рабочей книге, доступны при каждом использовании Excel.
        • Эта рабочая тетрадь (по умолчанию) - макрос будет сохранен в текущей рабочей книге и будет доступен при повторном открытии рабочей книги или при передаче ее другим пользователям.
        • Новая рабочая тетрадь - создает новую рабочую книгу и записывает макрос в эту рабочую книгу.
      • В Описание введите краткое описание того, что делает ваш макрос (необязательно).

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

      • Нажмите OK чтобы начать запись макроса.

    3. Выполните действия, которые вы хотите автоматизировать (см. пример макроса записи).
    4. После завершения нажмите кнопку Остановить запись кнопка на Разработчик вкладка:

      Или аналогичная кнопка на Статус бар:

    Пример записи макроса в Excel

    Чтобы увидеть, как это работает на практике, давайте запишем макрос, который применяет форматирование к выделенным ячейкам. Для этого сделайте следующее:

    1. Выберите одну или несколько ячеек, которые необходимо отформатировать.
    2. На Разработчик вкладка или Статус панель, нажмите Макрос записи .
    3. В Макрос записи диалогового окна, настройте следующие параметры:
      • Назовите макрос Форматирование заголовка (потому что мы собираемся форматировать заголовки столбцов).
      • Установите курсор в Клавиша быстрого доступа и одновременно нажмите клавиши Shift + F. Это назначит макросу сочетание клавиш Ctrl + Shift + F.
      • Выберите сохранение макроса в этой рабочей книге.
      • Для Описание Используйте следующий текст, объясняющий, что делает макрос: Делает текст жирным, добавляет цвет заливки и выравнивает по центру .
      • Нажмите OK чтобы начать запись.

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

      Совет. Не выделяйте ячейки после начала записи макроса. Это гарантирует, что все форматирование будет применено к ячейкам. выбор , а не конкретный диапазон.

    5. Нажмите Остановить запись на Разработчик вкладка или Статус бар.

    Вот и все! Ваш макрос записан. Теперь вы можете выделить любой диапазон ячеек на любом листе, нажать назначенное сочетание клавиш (Ctrl+ Shift + F), и ваше пользовательское форматирование будет немедленно применено к выделенным ячейкам.

    Как работать с записанными макросами в Excel

    Доступ ко всем основным опциям, которые Excel предоставляет для макросов, можно получить через Макро Чтобы открыть диалоговое окно, нажмите кнопку Макросы кнопка на Разработчик вкладку или нажмите сочетание клавиш Alt+ F8.

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

    • Запускайте - выполняет выбранный макрос.
    • Шаг в - позволяет отлаживать и тестировать макрос в редакторе Visual Basic.
    • Редактировать - открывает выбранный макрос в редакторе VBA, где можно просматривать и редактировать код.
    • Удалить - окончательно удаляет выбранный макрос.
    • Опции - позволяет изменять свойства макроса, такие как связанный Ярлык ключ и Описание .

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

    Код макроса Excel можно просмотреть и изменить в редакторе Visual Basic Editor. Чтобы открыть редактор, нажмите Alt + F11 или щелкните по кнопке Visual Basic кнопка на Разработчик вкладка.

    Если вы впервые видите редактор VB, не отчаивайтесь и не пугайтесь. Мы не будем рассказывать о структуре или синтаксисе языка VBA. Этот раздел просто даст вам базовое понимание того, как работают макросы Excel и что на самом деле делает запись макроса.

    Редактор VBA имеет несколько окон, но мы остановимся на двух основных:

    Исследователь проектов - отображает список всех открытых рабочих книг и их листов. Кроме того, он показывает модули, пользовательские формы и модули классов.

    Кодовое окно - здесь вы можете просматривать, редактировать и писать код VBA для каждого объекта, отображаемого в Project Explorer.

    Когда мы записали пример макроса, в бэкенде произошли следующие события:

    • Новый модуль ( Moduel1 ) был вставлен.
    • Код VBA макроса был написан в окне Код.

    Чтобы просмотреть код конкретного модуля, дважды щелкните по модулю ( Модуль1 в нашем случае) в окне Project Explorer. Обычно макрокод состоит из следующих частей:

    Имя макроса

    В VBA любой макрос начинается с Sub за которым следует имя макроса, и заканчивается End Sub где "Sub" - это сокращение от Подпрограмма (также называемый Процедура ). Наш пример макроса называется Header_Formatting() , поэтому код начинается с этой строки:

    Sub Header_Formatting()

    Если вы хотите переименовать макрос просто удалите текущее имя и введите новое прямо в окне Code.

    Комментарии

    Строки с префиксом апострофа ('), которые по умолчанию отображаются зеленым цветом, не выполняются. Это комментарии, добавленные в информационных целях. Строки с комментариями можно смело удалять без ущерба для функциональности кода.

    Обычно записанный макрос имеет 1 - 3 строки комментариев: имя макроса (обязательно); описание и ярлык (если он был указан перед записью).

    Исполняемый код

    После комментариев идет код, выполняющий записанные вами действия. Иногда записанный макрос может содержать много лишнего кода, который, тем не менее, может быть полезен для понимания того, как все работает в VBA :)

    На рисунке ниже показано, что делает каждая часть кода нашего макроса:

    Как запустить записанный макрос

    Запуская макрос, вы говорите Excel вернуться к записанному коду VBA и выполнить точно такие же действия. Существует несколько способов запустить записанный макрос в Excel, и вот самые быстрые из них:

    • Если вы назначили сочетание клавиш к макросу, нажмите на этот ярлык.
    • Нажмите Alt + 8 или щелкните по кнопке Макросы кнопка на Разработчик вкладка. В Макро В диалоговом окне выберите нужный макрос и нажмите кнопку Запускайте .

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

    Как сохранить макросы в Excel

    Независимо от того, записали ли вы макрос или написали код VBA вручную, чтобы сохранить макрос, необходимо сохранить рабочую книгу в формате с поддержкой макросов (расширение.xlms). Вот как это сделать:

    1. В рабочей книге, содержащей макрос, нажмите кнопку Сохранить или нажмите Ctrl + S .
    2. В Сохранить как диалоговое окно, выберите Рабочая книга Excel с поддержкой макросов (*.xlsm) из Сохранить как тип раскрывающийся список, а затем нажмите Сохранить :

    Макросы Excel: что записывается и что не записывается

    Как вы только что убедились, записать макрос в Excel довольно просто. Но чтобы создавать эффективные макросы, необходимо понимать, что происходит за кулисами.

    Что записано

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

    • Выделение ячеек с помощью мыши или клавиатуры. Записывается только последнее выделение перед действием. Например, если вы выделите диапазон A1:A10, а затем щелкните ячейку A11, будет записано только выделение A11.
    • Форматирование ячеек, например, цвет заливки и шрифта, выравнивание, границы и т.д.
    • Форматирование чисел, например, в процентах, валюте и т.д.
    • Редактирование формул и значений. Изменения записываются после нажатия Enter .
    • Прокрутка, перемещение окон Excel, переключение на другие рабочие листы и рабочие книги.
    • Добавление, присвоение имен, перемещение и удаление рабочих листов.
    • Создание, открытие и сохранение рабочих книг.
    • Запуск других макросов.

    Что нельзя записывать

    Несмотря на множество различных вещей, которые Excel может записывать, некоторые функции находятся за пределами возможностей Macro Recorder:

    • Настройки ленты Excel и панели инструментов быстрого доступа.
    • Действия внутри диалоговых окон Excel, таких как Условное форматирование или Найти и заменить (записывается только результат).
    • Взаимодействие с другими программами. Например, вы не можете записывать копирование/вставку из рабочей книги Excel в документ Word.
    • Все, что связано с редактором VBA. Это накладывает наиболее существенные ограничения - многие вещи, которые можно сделать на уровне программирования, не могут быть записаны:
      • Создание пользовательских функций
      • Отображение пользовательских диалоговых окон
      • Выполнение таких петель, как Далее , Для каждого , Делать пока , и т.д.
      • Оценка условий. В VBA вы можете использовать функцию ЕСЛИ Тогда ИЛИ оператор для проверки условия и запуска некоторого кода, если условие истинно, или другого кода, если условие ложно.
      • Выполнение кода на основе событий. С помощью VBA можно использовать множество событий для выполнения кода, связанного с этим событием (например, открытие рабочей книги, пересчет рабочего листа, изменение выделения и так далее).
      • Использование аргументов. При написании макроса в редакторе VBA вы можете предоставить входные аргументы для выполнения макросом определенной задачи. Записанный макрос не может иметь никаких аргументов, поскольку он независим и не связан ни с какими другими макросами.
      • Понимание логики. Например, если вы записываете макрос, который копирует определенные ячейки, скажем в Всего строку, Excel будет записывать только адреса скопированных ячеек. С помощью VBA можно закодировать логику, т.е. скопировать значения в Всего ряд.

    Хотя приведенные выше ограничения устанавливают множество границ для записанных макросов, они все же являются хорошей отправной точкой. Даже если вы не имеете представления о языке VBA, вы можете быстро записать макрос, а затем проанализировать его код.

    Полезные советы по записи макросов в Excel

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

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

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

    Однако можно изменить поведение по умолчанию на относительные ссылки В этом случае VBA не будет жестко кодировать адреса ячеек, а будет работать относительно активной (выбранной в данный момент) ячейки.

    Чтобы записать макрос с относительной ссылкой, нажмите кнопку Используйте Относительные ссылки кнопка на Разработчик Чтобы вернуться к абсолютной ссылке, нажмите кнопку еще раз, чтобы выключить ее.

    Например, если вы записываете установку таблицы с абсолютной ссылкой по умолчанию, ваш макрос всегда будет воссоздавать таблицу в одном и том же месте (в данном случае, Заголовок в A1, Пункт1 в A2, Пункт2 в A3).

    Sub Absolute_Referencing() Range("A1" ). Select ActiveCell.FormulaR1C1 = "Заголовок" Range("A2" ). Select ActiveCell.FormulaR1C1 = "Пункт1" Range("A3" ). Select ActiveCell.FormulaR1C1 = "Пункт2" End Sub

    Если вы запишете тот же макрос с относительной ссылкой, таблица будет создана там, куда вы поместите курсор перед запуском макроса ( Заголовок в активной ячейке, Пункт1 в ячейке ниже, и так далее).

    Sub Relative_Referencing() ActiveCell.FormulaR1C1 = "Заголовок" ActiveCell.Offset(1, 0).Range( "A1" ). Select ActiveCell.FormulaR1C1 = "Пункт1" ActiveCell.Offset(1, 0).Range( "A1" ). Select ActiveCell.FormulaR1C1 = "Пункт2" ActiveCell.Offset(1, 0).Range( "A1" ). Select End Sub

    Примечания:

    • При использовании относительных ссылок обязательно выберите исходную ячейку перед началом записи макроса.
    • Относительные ссылки работают не везде. Некоторые функции Excel, например, преобразование диапазона в таблицу, требуют абсолютных ссылок.

    Выберите диапазоны с помощью сочетаний клавиш

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

    В качестве примера запишем макрос, который устанавливает определенный формат (d-mmm-yy) для дат в таблице ниже:

    Для этого выполните следующие действия: нажмите Ctrl + 1, чтобы открыть окно Форматирование ячеек диалог> Дата> выберите формат> OK. Если ваша запись включает выбор диапазона с помощью мыши или клавиш со стрелками, Excel выдаст следующий код VBA:

    Sub Date_Format() Range("A2:B4" ). Select Selection.NumberFormat = "d-mmm-yy" End Sub

    Запуск приведенного выше макроса будет каждый раз выбирать диапазон A2:B4. Если вы добавите в таблицу еще несколько строк, они не будут обработаны макросом.

    Теперь посмотрим, что произойдет, если выбрать таблицу с помощью ярлыка.

    Поместите курсор в левую верхнюю ячейку целевого диапазона (A2 в данном примере), начните запись и нажмите Ctrl + Shift + End . В результате первая строка кода будет выглядеть следующим образом:

    Range(Selection, ActiveCell.SpecialCells(xlLastCell)). Select

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

    Также можно использовать комбинации Ctrl + Shift + Стрелки:

    • Ctrl + Shift + стрелка вправо, чтобы выделить все используемые ячейки справа, а затем
    • Ctrl + Shift + стрелка вниз, чтобы выделить все используемые ячейки вниз.

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

    Range(Selection, Selection. End (xlToRight)). Select Range(Selection, Selection. End (xlDown)). Select Range(Selection, Selection. End (xlDown)). Select

    Запись макроса для выбора, а не для конкретных ячеек

    Приведенный выше метод (т.е. выделение всех используемых ячеек, начиная с активной ячейки) отлично подходит для выполнения тех же операций над всей таблицей. Однако в некоторых ситуациях вы можете захотеть, чтобы макрос обрабатывал определенный диапазон, а не всю таблицу.

    Для этого в VBA предусмотрена функция Выбор объект, который ссылается на текущую выделенную ячейку (ячейки). Большинство вещей, которые можно сделать с диапазоном, можно сделать и с выделением. Какое преимущество это дает? Во многих случаях вам вообще не нужно ничего выделять во время записи - просто напишите макрос для активной ячейки. А затем выделите любой диапазон, запустите макрос, и он будет работать со всем выделением.

    Например, этот однострочный макрос может отформатировать любое количество выделенных ячеек в проценты:

    Sub Percent_Format() Selection.NumberFormat = "0.00%" End Sub

    Тщательно планируйте то, что вы записываете

    Программа Microsoft Excel Macro Recorder фиксирует практически все ваши действия, включая ошибки, которые вы допускаете и исправляете. Например, если вы нажмете Ctrl + Z, чтобы отменить что-то, это также будет записано. В конце концов, у вас может оказаться много ненужного кода. Чтобы избежать этого, либо отредактируйте код в редакторе VB, либо остановите запись, удалите некачественный макрос и начните запись заново.

    Резервное копирование или сохранение рабочей книги перед запуском макроса

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

    Записывайте макросы коротко

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

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

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.