Макросы в excel самоучитель с примерами. Учимся писать макросы – Офисное пространство. Добавление кнопок макросов на вкладки.

В Microsoft Excel, как и в другие приложения Microsoft Office, встроен интерпретатор языка программирования Visual Basic for Applications (VBA), что дает возможность создавать и запускать программы - макросы.

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

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

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

Взгляд под капотом: что делает макрос работы

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

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

Запись макроса в Excel

Процесс записи макроса рассмотрим на примере.

Процесс открытия этого файла и его импорта можно легко превратить в макрос. Сохраните обновленный шаблон.

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

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

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

Давайте рассмотрим способы создания макросов в Excel. Первым делом Вам необходимо проверить настройку безопасности для того, что бы макросы были включены, иначе ничего не получится. Перейдите главное меню «Сервис-Макрос-Безопасность »

Всегда начинайте запись с курсором в A1

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

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

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

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

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

  1. Записать с помощью соответствующего пункта меню
  2. Создать вручную

Первый способ легкий и не требует никаких знаний в программировании. Достаточно в главном меню выбрать Сервис- >Макрос->Начать запись…

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

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

Разрешить использование макросов







Ваш браузер не может показывать этот фрейм. Если раньше вы не запускали макросы, вам может потребоваться изменить уровень безопасности макросов. Теперь, когда вкладка «Разработчик» видна, вы можете подготовиться к тестированию макроса. Откройте файл макросов. Сначала вы откроете файл, в котором хранится записанный макрос, и включите макросы, выполнив следующие действия.



В открывшемся окне записи макроса необходимо указать его имя, которое будет выводиться в списке доступных макросов, можно добавить описание (для чего макрос, автор и т.д.), присвоить клавишу для быстрого запуска и указать в какую книгу сохранить макрос. После нажатия «OK » начнется запись

Как макросы помогают в работе?




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

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

Теперь, все что Вы будете делать в рабочей книге (добавлять, изменять, удалять, создавать сводные и т.д.) все будет записываться. Для примера напишите в ячейке B3=45, B4 = 5, а в В5 формулу «=В3+B4*10». Для остановки записи необходимо нажать соответствующую кнопку:

После завершения записи наш макрос появится в списке Сервис->Макрос->Макросы ( Alt+ F8)

Действия с объектами

Первые пять правил обычно оказывают наибольшее влияние на производительность макросов. Правила с 6 по 11 оказывают незначительное влияние. Обратите внимание, что мои оценки экономии времени ниже могут значительно различаться для вашего конкретного приложения.

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



Остается его только выбрать и нажать «Выполнить ».

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

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

Как только макрос начинается, важно избегать ненужных ссылок на рабочий лист. Захват данных из таблицы - это перетащить производительность. Избегайте чтения или записи данных рабочего листа в циклах, когда это возможно. Гораздо быстрее прочитать данные один раз и сохранить их в памяти, чем перечитывать их каждый раз.


Откроется следующий код:

Sub Макрос1()
Range("B3").Select
ActiveCell.FormulaR1C1 = "45"
Range("B4").Select
ActiveCell.FormulaR1C1 = "5"
Range("B5").Select
ActiveCell.FormulaR1C1 = "=R[-2]C+R[-1]C*10"
Range("B6").Select
End Sub

Sub End Sub – все макросы запускаемые через меню Сервис->Макрос->Макросы начинаются с ключевого слова Sub (процедура). Далее следует название процедуры «Макрос1», оно же имя нашего макроса которое указывается в момент начала записи. Пустые скобки обязательны! Следует учесть, что «запускаемая» процедура не должна содержать никаких параметров, иначе макрос исчезнет из списка. Все процедуры в VB завершаются командой End Sub . Sub имеет дополнительные ключевые слова Private и Public , определяющие зону видимости процедуры. Об этом будет рассказано в следующих статьях.

Код ниже более чем в 100 раз быстрее, чем код выше! Часто заманчиво оставлять формулы в электронной таблице и вызывать их из макроса. Но, если скорость важна, поместите все формулы в макрос. Это минимизирует трафик и не требует пересчета электронных таблиц.

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

Аналогичным образом, вот примеры записи массива обратно в рабочий лист. Это правило было для меня удивительным. Однако приведенный ниже код более чем в 80 раз быстрее! Вы должны оценить влияние перезаписи функции. Или «Рабочий лист». Избегайте использования вариантов в формулах.

Range(" B3"). Select – эта и последующие команды были записаны когда мы выделяли ячейки B3, B4, B5.

ActiveCell.FormulaR1C1 – команда записывающая значение или формулу в выделенную ячейку после знака равенства. Данная запись присвоения ячейке значения и формулы не очень удобна. На следующих уроках мы будем использовать свойство Cells объекта рабочего листа Worksheet.

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

Что такое «Макрос»?

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

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

Второй способ, запись кода VBA вручную. Данный способ будет рассмотрен на следующем уроке и на всех последующих, будем работать только вторым способом.

Ну и напоследок, видео-демонстрация записи макроса.

Видео: Запись макроса в Excel

Обычно вам не нужно использовать команду «Выбрать» для чтения или записи на рабочий лист. Это примерно в 30 раз быстрее, чем не выбрать рабочий лист. В качестве актуариев мы любим макросы, полные формул. Часто формулы не так эффективны, как должны быть. В приведенном ниже примере макрос рассчитывает ежемесячное значение фонда, растущего с 5-процентным годовым фактическим процентом в течение 50 лет.

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