Создаём макросы в программе MS Excel

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

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

Всего можно задать макрос двумя способами:

  • Автоматически;
  • Вручную.

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

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

Включение автоматической записи макросов

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

Здесь же будет предоставлена только краткая инструкция по их включению:

  1. Откройте табличный редактор MS Excel и нажмите на кнопку «Файл», что расположена в верхней части окна.
  2. Здесь, в левом меню, выберите пункт «Параметры».
  3. В новом окне перейдите ко вкладке «Настройка ленты».
  4. Далее обратите внимание на то, чтобы в левом окошке обязательно стояла галочка у пункта «Разработчик». Если её там нет, то поставьте и нажмите «Ок».
  5. Теперь в верхнем меню таблицы должен появится раздел «Разработчик». Перейдите в него.
  6. Там должна быть кнопка в виде восклицательного знака в жёлтом треугольнике. Нажмите на неё.
  7. В новом окне откройте раздел «Параметры макросов». В нём обязательно установите переключатель у пункта «Включить все макросы». Здесь вы также можете увидеть предупреждение, что запуск этой опции не рекомендуется, так как при неумелом использовании возможно проникновение/запуск опасной программы.
  8. Нажмите «Ок». Всё, теперь макросы в MS Excel включены. При необходимости вы можете отключить их в любой момент.

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

  1. Снова перейдите во вкладку «Разработчик», которая должна была появится после выполнения предыдущей инструкции.
  2. Здесь нажмите на кнопку «Запись макроса». Она расположена в блоке «Код» и в некоторых версиях может быть без подписи, поэтому смотрите её расположение на скриншоте ниже. Оно не меняется в зависимости от версии продукта.
  3. Появится окошко, в котором вам нужно указать имя для макроса. По умолчанию оно звучит как «Макрос1». Если оно вам не нравится по каким-либо причинам, вы можете сменить его. В имени разрешено использовать нелатинские символы. Главное условие, чтобы название не начиналось с цифры и не содержало пробелов.
  4. В этом же окошке вы можете установить сочетание клавиш, отвечающих за вызов вашего макроса. По умолчанию первой клавишей всегда будет стоять Ctrl, а за ней можно прописать любую. Давайте в качестве примера поставим «M». Здесь желательно избегать сочетаний клавиш, которые уже используются по умолчанию в Excel, например, Ctrl+Z, Ctrl+C, Ctrl+V, Ctrl+A и т.д. Их лучше не устанавливать.
  5. Ниже программа запросит, где сохранять макрос. По умолчанию он будет сохраняться в этом же файле (который в программе называется «книга»). Вы можете назначить в качестве места для сохранения макроса другую книгу, выделить все макросы в отдельную книгу. Мы же оставим этот параметр по умолчанию.
  6. При желании можно составить описание для вашего макроса, но это совершенно необязательно. В описании можно использовать любые символы, пробелы.
  7. Когда закончите с настройкой макроса нажмите кнопку «Ок».

После этого включится автоматическая запись действий для встроенного в программу макроса. Будут записываться все ваши действия в программе до тех пор, пока вы не остановите запись. Давайте для примера создадим макрос, который будет при запуске складывать содержимое нескольких ячеек. В нашем случае формула для макроса будет выглядеть так: =C4+C5+C6.

На нашем сайте есть вводная статья по работе с формулами в Excel. Если вы сейчас плохо понимаете, о чём идёт речь, то рекомендуем ознакомиться с данным материалом по ссылке.

Давайте запишем наш первый макрос:

  1. Выделите ячейку, в которой будет записана формула.
  2. Пропишите формулу. В данном случае это формула вида a+b+c. Вместо букв потребуется вставить номера ячеек. Вид формулы можете посмотреть выше или перейти по ссылке с отдельной статьёй. Помните, что ячейки, которые вы указываете в формуле, не должны быть пустыми. В противном случае вместо решения вы получите ошибку.
  3. Макрос записал ваше действие с формулой. Нажмите Enter, чтобы она посчиталась.
  4. Теперь можете остановить запись макроса. Для этого перейдите в раздел «Разработчик» и нажмите на кнопку «Остановить запись». В некоторых версиях табличного редактора данная кнопка может быть не подписана. Тогда смотрите её расположение на скриншоте.

Запускаем макрос

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

  1. Снова откройте вкладку «Разработчик» и там найдите большую кнопку «Макросы». Она расположена в блоке «Код». Также вы можете воспользоваться сочетанием клавиш Alt+F8.
  2. Откроется окошко, в котором будет представлен список всех ранее записанных макросов. Найдите среди них макрос, который был записан ранее и нажмите на кнопку «Выполнить». Так как у нас один макрос, то с этим проблем возникнуть не должно.

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

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

Редактируем макрос

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

  1. Перейдите во вкладку «Разработчик», а затем откройте «Макросы» или воспользуйтесь комбинацией клавиш Alt+F8.
  2. В появившемся окошке работы с макросами выберите тот, который вы недавно создали и нажмите на кнопку «Изменить», что расположена в левой части окна.
  3. Откроется среда разработки Microsoft Visual Basic (VBE). Она используется для редактирования макросов, а также создания некоторых других элементов. Чтобы комфортно работать с кодом вам нужно знать язык программирования Basic, а ещё лучше его адаптацию под эту среду разработки. Чтобы вам было проще понимать принцип работы макроса, мы рассмотрим основные элементы синтаксиса:
    • Sub – это команда отвечающая за начало записи макроса. Она обязательно стоит в самом начале, затем идёт наименование макроса, которое задал пользователь, а затем сам код макроса;
    • End Sub. Стоит в самом конце кода. Отвечает за остановку записи, следовательно, и выполнения макроса;
    • Range(«…»).Select. Это оператор, отвечающий за выбор ячейки. Например, команда Range(«A1»).Select выберет ячейку с идентификатором A1;
    • ActiveCell.FormulaR1C1. Отвечает за работу с формулами, которые используются при записи макроса. Также может быть использовано для других расчётов.
  4. В качестве примера попробуем сделать так, чтобы макрос выполнял расчёты для четырёх ячеек, а не трёх, как ранее. Изначально пропишем Range(«идентификатор ячейки»).Select, чтобы выбралась нужная нам ячейка.
  5. Под строкой с этой командой нужно будет прописать ActiveCell.FormulaR1C1 = «58». Вместо 58 вы можете взять любое число.
  6. Также выражение ActiveCell.FormulaR1C1 = «=R[-3]C+R[-2]C+R[-1]C», что расположено в предпоследней строчке, нужно будет заменить на ActiveCell.FormulaR1C1 = «= R[-4]C+R[-3]C+R[-2]C+R[-1]C», чтобы наша формула окончательно заработала.
  7. Закройте редактор и запустите выполнение макроса по аналогии с инструкцией, которая была дана выше.

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

Во время работы с большими макросами вы можете столкнуться с тем, что его выполнение занимает много времени, а также потребляет значительную часть ресурсов машины. Обычно, данная проблема больше актуальна для старых компьютеров. Если вы хотите ускорить процесс выполнения, то в код придётся добавить команду Application.ScreenUpdating = False. Она отвечает за выполнение обновления экрана во время вычислительных действий. Если у неё после равно стоит значение «False», то обновление экрана после каждого действия макроса будет отключено, что позволит значительно сократить потребление вычислительных ресурсов компьютера. В конце вы только увидите результат вычисления.

Читайте также:
Пошаговая инструкция включения или отключения макросов в Excel
Поиск и удалени циклических ссылок в Excel (Эксель)
Умная таблица в Excel (Эксель): создание и использование
Как сделать таблицу в Microsoft Excel

Для возобновления обновления экрана после выполнения каждой задачи следует прописать команду Application.ScreenUpdating = True.

Также для оптимизации работы макросов в Excel можно воспользоваться командой Application.Calculation = xlCalculationManual, которая ставится в начальной позиции кода (примерное расположение отмечено на скриншоте). В конце кода вам нужно будет написать команду Application.Calculation = xlCalculationAutomatic. Первая команда отключит автоматический пересчёт результата после каждого изменения в ячейках, а вторая наоборот, включит его, но только уже после выполнения основной части макроса. Благодаря этому Excel будет считать результат только один раз, а не после каждого выполненного действия, что значительно сэкономит время и ресурсы. Правда, иногда подобного рода команды могут исказить результат подсчёта, поэтому в определённых условиях от использования этой команды приходится отказаться.

Создание макроса с чистого листа

Этот вариант подойдёт только для продвинутых пользователей, которые хорошо знакомы с языком Basic, так как на нём пишутся все макросы. Программа позволяет не только редактировать макрос в специальном редакторе, но и писать его с нуля в таком же редакторе.

  1. Перейдите во вкладку «Разработчик» и нажмите там на кнопку «Visual Basic».
  2. Откроется среда разработки, в которую вам и нужно будет прописывать код. Он пишется вручную, но некоторые плагины для офисного пакета Майкрософт могут значительно ускорить написание макросов.

Сами макросы позволяют значительно ускорить процесс работы в Excel и сопутствующих продуктах. В основном они завязана на автоматизации рутинных процессов, которые постоянно повторятся и никак (или почти никак) не меняются. Макросы можно записать без знаний кода и отредактировать/оптимизировать их, если имеются базовые представления о синтаксисе Basic. Если у вас имеются какие-либо вопросы по статье или предложения, то напишите их в комментариях ниже.

Понравилась статья? Поделиться с друзьями:
Задайте вопрос или оставьте свое мнение

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.