{quote}{login=}{date=01.09.2008 02:03}{thema=Re: }{post}Есть ли в EXCELе возможность выбрать макрос и нажать продолжить запись, сделать нужные действия и сохранить его.{/post}{/quote}
Инструкция:
Записали макрос, например:
Sub Макрос1()
‘примечания
Range(«D3»).Select
End Sub
Снова включаем макрорекордер, потом Макросы… -> Макрос1 -> Изменить, видим:
Sub Макрос1()
‘примечания
Range(«D3»).Select
End Sub
Sub Макрос3()
‘примечания
Application.Goto Reference:=»Макрос1″
End Sub
Стираем строки:
End Sub
Sub Макрос3()
‘примечания
Application.Goto Reference:=»Макрос1″
Остались строчки, что были в начале, но курсор записи макроса сместился в него. Жмём Alt+q и продолжаем запись.
Содержание
- VBA Excel. Макросы (запись, запуск, пример)
- Вкладка «Разработчик»
- Запись макроса
- Список макросов
- Запуск макроса
- Пример записи простого макроса
- 18 трюков для Excel VBA 2018 год
- 18 Советов для макросов VBA
- Скачать PDF
- Содержание
- Скачать PDF
- Какой ваш любимый совет для VBA?
VBA Excel. Макросы (запись, запуск, пример)
Создание макросов в разных версиях Excel для автоматизации повторяющихся действий пользователя, которые могут быть простыми или сложными, часто повторяющимися или редко. Для использования макросов на практике обычно их приходится корректировать в редакторе VBA. Чтобы Excel мог запускать макросы, необходимо разрешить их выполнение.
Вкладка «Разработчик»
Запись макроса осуществляется встроенным рекордером, кнопка запуска которого находится на вкладке «Разработчик» главного меню программы Excel. По умолчанию эта вкладка не отображается. Добавить вкладку на панель можно следующим образом:
Excel 2010-2016
Переходим по пути: Файл — Параметры — Настроить ленту. В разделе «Настроить ленту» справа в списке «Основные вкладки» устанавливаем флажок «Разработчик» и нажимаем кнопку «OK».
Excel 2007
Переходим по пути: значок «Microsoft Office» — Параметры Excel — категория «Основные», в категории «Основные» устанавливаем флажок «Показывать вкладку «Разработчик» на ленте» и нажимаем кнопку «OK».
Excel 2000-2003
Здесь ничего отображать не надо: кнопки по работе с макросами и редактором VBA находятся в главном меню на вкладке «Сервис» — «Макрос».
На самом деле в Excel для работы с макросами используются не кнопки, а пункты меню, но, для удобства, продолжу называть их кнопками.
Запись макроса
Excel 2007-2016
На ленте во вкладке «Разработчик» нажмите кнопку «Запись макроса».
Excel 2000-2003
Пройдите по пунктам меню «Сервис» — «Макрос» — «Начать запись».
Окно «Запись макроса»
Имя макроса: можно изменить или оставить по умолчанию («Макрос» с очередным номером). Если у вас уже есть макрос с таким именем, он будет записан в новый программный модуль, который будет создан автоматически.
Сочетание клавиш: добавьте букву, если хотите запускать макрос сочетанием клавиш Ctrl+«буква». В какой раскладке вы впишите букву (например, «й» или «q»), в той и будет запускаться макрос. Если буква будет вписана в верхнем регистре («Й» или «Q»), используйте для запускa макроса сочетание клавиш Ctrl+Shift+«буква».
Сохранить в: выберите книгу, в которой должен быть сохранен макрос:
- «Эта книга» — макрос будет записан в книге, из которой рекордер был запущен (нажата кнопка «Запись макроса»).
- «Новая книга» — откроется новая книга и макрос будет записан в ней.
- «Личная книга макросов» — макрос запишется в Личную книгу макросов и будет доступен из всех открытых книг Excel.
Описание: здесь можно добавить краткое описание макроса, которое будет отображаться в окне доступных макросов при выделении его в списке.
Заполнив окно, нажимаем кнопку «OK», кнопка «Запись макроса» меняет свое название на «Остановить запись», и можно приступать, собственно, к записи макроса. Выполните на рабочем листе операции, последовательность которых вы хотите автоматизировать и, после их завершения, нажмите кнопку «Остановить запись». Макрос будет записан и появится в списке макросов.
Список макросов
Окно со списком макросов открывается во всех версиях Excel нажатием кнопки «Макросы». Выглядит оно следующим образом:
Список макросов во всех открытых книгах
- Выполнить — выделенный макрос будет запущен на выполнение.
- Войти — переход к коду макроса, запущенному и поставленному на паузу, как при обнаружении ошибки в коде.
- Изменить — переход к коду макроса для редактирования.
- Создать — кнопка станет активной при записи имени нового макроса в поле «Имя макроса».
- Удалить — удаление выделенного макроса.
- Параметры… — редактирование сочетания клавиш для запуска макроса и его описания.
- Находится в: — здесь можно выбрать все открытые книги или одну из них.
- Описание — текст, добавленный в одноименное поле при создании макроса или редактировании его параметров.
Запуск макроса
Запустить записанный макрос можно следующими способами:
- Сочетанием клавиш, указанным в параметрах макроса.
- Кнопкой «Выполнить» из окна списка макросов.
- Кнопкой «Run Sub» или клавишей «F5» из редактора VBA.
- Кнопкой, добавленной на лист Excel из раздела «Элементы управления формы» и которой назначен запускаемый макрос.
Кроме этого макрос можно назначить изображению, добавить кнопку запуска на панель быстрого доступа и в меню (на ленту).
Пример записи простого макроса
Выполните следующие действия:
Excel 2007-2016
- Откройте книгу Excel или создайте новую и сохраните ее как книгу с поддержкой макросов (.xlsm).
- На вкладке «Разработчик» нажмите кнопку «Запись макроса».
- В окне «Запись макроса» нажмите кнопку «OK», оставив параметры по умолчанию.
- Перейдите на вкладку «Главная» и выберите любой цвет заливки ячеек.
- Нажмите кнопку «Остановить запись».
Excel 2000-2003
- Откройте книгу Excel или создайте новую и сохраните ее с расширением по умолчанию (.xls).
- Включите запись макроса, пройдя по пунктам меню «Сервис» — «Макрос» — «Начать запись».
- В окне «Запись макроса» нажмите кнопку «OK», оставив параметры по умолчанию.
- На панели инструментов выберите любой цвет заливки ячеек.
- Нажмите кнопку «Остановить запись».
В результате будет записан простейший макрос окрашивания фона выделенной ячейки или диапазона.
Откройте список макросов, выберите записанный макрос и нажмите кнопку «Изменить». Вы увидите код вашего макроса:
Источник
18 трюков для Excel VBA 2018 год
Итог: Изучите 18 советов для экономии времени при написании макросов VBA для Excel или других приложений Office.
Уровень мастерства: Средний
18 Советов для макросов VBA
В начале прошлого года я написал популярный пост о 17 советах для Excel на 2017 год. Я решил продолжить традицию в этом году и написать пост о советах, которые сэкономят ваше время при написании макросов VBA.
Здесь часть из моих любимых советов, а также некоторые любимые из блога на YouTube и моего курса VBA Pro.
Очевидно, есть множество советов для VBA. Поэтому, пожалуйста, оставьте комментарий внизу поста с вашими любимыми советами. Таким образом, мы все можем учиться друг у друга! 🙂
Скачать PDF
Вы можете скачать печатную версию статьи в формате PDF.
Содержание
- Alt + F11, чтобы открыть редактор VB
- Храните свои макросы в личной книге макросов
- Ctrl + Пробел для автозаполнения
- Intellisense для листов
- Использовать комментарии либерально
- F8, чтобы пройти через каждую строку кода
- Назначить макросы фигурам
- Автоматизируйте повторяющиеся задачи с помощью цикла For Next
- Используйте Option Explicit
- Таблицы Excel (ListObjects)
- Получить код с помощью Macro Recorder
- Непосредственное окно
- Назначить сочетание клавиш для макроса
- Убедитесь, что выбран диапазон
- Ctrl + Y, чтобы удалить строку кода
- Ctrl + I для быстрой информации
- Ctrl + J Открывает раскрывающийся список Intellisense
- Функции рабочего листа
# 1 — Alt + F11, чтобы открыть редактор VB
VB Editor — это приложение, которое мы используем для написания макросов и создания пользовательских форм. Его можно открыть, нажав кнопку Visual Basic на вкладке «Разработчик» в Excel.
Сочетание клавиш для открытия редактора VB в любой версии Excel для Windows — Alt + F11.
Версия для Mac — Opt + F11 или Fn + Opt + F11.
Если вы не видите вкладку «Разработчик» на ленте, щелкните изображение, чтобы узнать, как его включить:
Клавиши Fn (функция) на ноутбуках
Если вы используете клавиатуру ноутбука, вам нужно нажать и удерживать клавишу Fn, прежде чем нажимать F11. Функциональные клавиши на ноутбуках, как правило, являются многофункциональными клавишами и требуют нажатия клавиши Fn для активации функциональных клавиш (F1 – F12).
Некоторые ноутбуки имеют функцию Fn Lock, которая делает функциональные клавиши первичными, что означает, что вам не придется нажимать клавишу Fn при нажатии F1-F12.
Ознакомьтесь с моей статьей «Лучшие сочетания клавиш для Excel», чтобы узнать больше.
# 2 — Храните свои макросы в личной книге макросов
Personal Macro Workbook (PMW) — это отличное место для хранения часто используемых вами макросов. Эта книга открывается в фоновом режиме каждый раз, когда мы открываем Excel, что делает наши макросы легко доступными.
Мы также можем создавать собственные панели инструментов с кнопками для запуска наших макросов. Мне нравится думать о PMW как о нашем инструментальном поясе Excel, который может сэкономить нам время на выполнение задач, которые мы выполняем каждый день.
Например, у меня есть статья с макросом, который создает список уникальных значений на новом чистом листе. Мы можем сохранить этот макрос в нашем PMW и назначить его кнопке на ленте или ярлыке клавиатуры, а затем запустить его в любое время на любой открытой книге.
Ознакомьтесь с моей бесплатной серией видеороликов о том, как создать личную книгу макросов, чтобы узнать больше. В этой серии также есть видео о том, как добавить кнопки макросов на пользовательскую ленту.
# 3 — Ctrl + Пробел для автозаполнения
Это одно из часто используемых мною сочетаний клавиш в VBA. Когда мы набираем код, Ctrl + Space открывает раскрывающееся меню Intellisense, которое содержит список подходящих объектов, свойств, методов, констант и переменных.
Чтобы использовать сочетание клавиш Ctrl + Space в VB Editor:
- Начните вводить строку кода, подобную ActiveCell.
- После ввода первых нескольких букв нажмите Ctrl + Пробел
- Вы увидите список всех слов VBA, которые начинаются с Act.
- Нажмите стрелки вверх / вниз, чтобы выбрать слово
- Затем нажмите Tab или Enter, чтобы завершить слово.
У этого трюка есть два основных преимущества:
- Это экономит время, так как не нужно набирать длинные слова и имена переменных.
- Это предотвращает опечатки, потому что VBA завершает слова для вас.
Эти преимущества могут значительно сэкономить время при отладке кода.
# 4 — Intellisense для листов
Обычно мы также видим раскрывающееся меню Intellisense после ввода точки (.) В редакторе VB.
Однако это работает не всегда. Одним из распространенных случаев является свойство Worksheets.
Если мы введем Worksheets («Лист1»). Мы НЕ видим меню Intellisense. Вы можете расстроиться и подумать, что Intellisense не работает.
Причина, по которой он не работает, заключается в том, что свойство Worksheets может содержать ссылку на один или несколько листов. В зависимости от ссылки, свойства и методы будут разными для каждого случая. Было бы замечательно, если бы Intellisense был достаточно умен, чтобы понять это, но это всего лишь одна из тех вещей, с которыми нам приходится жить …
Есть два способа обойти это и увидеть Intellisense для рабочих листов:
- Используйте кодовое имя рабочего листа, на который мы хотим сослаться. Это мой любимый метод для ссылок на рабочие листы, потому что код не сломается, если пользователь изменит имя листа.
2. Сначала установите для рабочей таблицы переменную объекта Worksheets. Затем, когда мы введем имя переменной, за которым следует точка (ws.), Появится меню Intellisense.
Сначала установите для рабочей таблицы переменную объекта Worksheets. Затем, когда мы введем имя переменной, за которым следует точка (ws.), Появится меню Intellisense.
# 5 — Используйте комментарии чаще
Мы можем добавить комментарии к нашему коду, которые помогут объяснить, что делает каждый раздел кода.
Чтобы создать комментарий в VBA, вы вводите апостроф в начале строки. Как только вы переместите текстовый курсор за линию, текст станет зеленым.
Зеленый текст позволяет легко различать комментарии при чтении кода. VBA полностью игнорирует строки комментариев, и вы можете добавить столько, сколько захотите.
Комментарии к коду несколько спорная тема. Некоторые разработчики считают, что правильно написанный код должен говорить сам за себя, и вам не нужно добавлять дополнительные комментарии. Я понимаю их точку зрения, но это не работает для меня по двум причинам.
Когда я возвращаюсь к своим собственным проектам спустя месяцы / годы, я не помню, что делает весь макрос. Комментарии похожи на заголовки в этом сообщении в блоге и позволяют легко просматривать макрос, чтобы найти нужный раздел. Они также быстро говорят нам, что делает каждый раздел.
Если вы собираетесь поделиться своим проектом VBA или в конечном итоге передать его кому-то другому для технического обслуживания, тогда им будет намного легче выучить ваш код, если вы добавите много комментариев. Я называю это «вежливым планированием вашего наследия». 🙂
№ 6 — F8, чтобы пройти через каждую строку кода
Сочетание клавиш для перехода по каждой строке кода — F8. Эквивалентом Mac для Step Into/Through является Cmd + Shift + I.
Это позволяет нам тестировать и отлаживать каждую строку кода в наших макросах. Мы также можем открыть Excel рядом с редактором VB (или на отдельном мониторе), чтобы увидеть действия, выполняемые в Excel при выполнении каждой строки.
Часто это может помочь вам быстро найти ошибку с помощью листа или диапазона.
Чтобы использовать ярлык Step Into/Through:
- Нажмите внутри макроса, который вы хотите запустить. Вы можете нажать на любую строку кода. Макрос всегда будет начинаться сверху.
- Нажмите F8.
- Имя макроса будет выделено желтым цветом.
- Нажмите F8 еще раз, чтобы запустить эту строку и выделить следующую строку.
- Продолжайте нажимать F8, чтобы запустить каждую строку.
Важно отметить, что выделенная желтым строка еще не была выполнена. Она будет запущен, когда вы снова нажмете F8.
# 7 — Фигуры, запускающие макросы
Листовые элементы управления для кнопок, запускающих макросы, выглядят немного устаревшими. К счастью, мы также можем использовать любую фигуру в Excel для запуска макроса. Формы можно раскрасить и отформатировать, чтобы они больше походили на современные кнопки, которые можно найти в Интернете и в мобильных приложениях.
Чтобы назначить макрос формой:
- Вставьте фигуру на лист и отформатируйте ее по своему вкусу. Обычно это будет прямоугольная или круглая форма, содержащая текст.
- Щелкните правой кнопкой мыши форму и выберите «Назначить макрос …».
- Выберите макрос из списка и нажмите ОК. Макрос обычно будет тем, который хранится в той же книге, что и фигура.
- Нажмите на форму, выбрав ячейку на листе.
- При наведении курсора курсор изменится на указатель руки. Нажатие на форму запустит макрос.
Я рекомендую, чтобы окно «Да / Нет» появилось до того, как макрос действительно запустится. Это предотвращает любые случайные нажатия кнопок. Посмотрите мое видео о добавлении окна сообщения Да / Нет в ваши макросы. Это часть моей серии видеороликов о Персональной рабочей тетради.
# 8 — Автоматизируйте повторяющиеся задачи с помощью цикла For Next
Мы склонны выполнять одни и те же задачи снова и снова в Excel. Такие задачи, как: применение форматирования к нескольким диапазонам / листам, создание списка листов, копирование данных в каждую рабочую книгу, настройка фильтров для каждой сводной таблицы и т.д.
Циклы являются одним из самых мощных инструментов в VBA, которые позволяют нам автоматизировать эти задачи. Цикл будет проходить по каждому элементу в коллекции (например, рабочие листы в рабочей книге или ячейки в диапазоне) и выполнять любой код, который вам нравится, для каждого элемента.
Существует несколько различных типов циклов, но цикл For Next Loop является наиболее распространенным. Ознакомьтесь с моей углубленной статьей «For Next Loop» в VBA для более подробной информации об этой обязательной технике кодирования.
# 9 — Используйте Option Explicit
Это еще одна спорная тема, но я требую (вежливо прошу), чтобы все участники моего курса VBA Pro использовали Option Explicit.
Итак, что это и почему?
Опция Explicit требует от нас объявить все переменные. Когда мы видим строки кода с инструкциями Dim в верхней части макроса, это объявляет переменную.
Мы в основном говорим VBA создать переменную в памяти для последующего использования во время выполнения кода. Затем мы можем установить значения или ссылки на объекты для этих переменных в макросе под оператором Dim.
Основное преимущество Option Explicit заключается в том, что он предотвращает опечатки и экономит время. Редактор VB выдаст сообщение «Ошибка компиляции: переменная не определена» при попытке запустить код, если переменная в коде не объявлена. Также будет выделена переменная, чтобы вы могли объявить ее или исправить опечатку.
Если у вас нет Option Explicit и неправильно написана переменная, код все равно будет работать и может привести к ошибкам в результатах. Если ваш макрос длинный, то может понадобиться много времени, чтобы найти эти опечатки. Доверьтесь мне. Там было сделано это!
Опция Explicit предотвращает эти ошибки и помогает вам оставаться в здравом уме. 🙂
Чтобы включить Option Explicit, просто введите слова Option Explicit в верхней части модуля кода. Вы также можете сделать так, чтобы VB Editor автоматически добавлял слова в новые модули кода, для этого перейдите в Инструменты> Параметры> установите флажок «Требовать декларацию переменной». Опция Explicit теперь будет отображаться в верхней части каждого нового кода модуля, который вы создаете.
# 10 — Таблицы Excel (ListObjects)
Использование таблиц Excel в наших книгах дает ряд преимуществ. Они экономят время благодаря форматированию данных, автоматическому заполнению формул и отлично работают в качестве источника сводной таблицы.
Таблицы Excel также значительно упрощают написание кода VBA для динамических диапазонов данных. Это список или набор данных, в котором количество строк или столбцов постоянно меняется по мере получения новых / обновленных данных.
Например, следующая строка кода ссылается на ячейки в диапазоне A2: A15.
Это жестко заданный диапазон. Если вы добавляете новые данные внизу, вам придется вручную изменить код, чтобы включить новые строки.
Однако, если мы храним данные в таблице Excel и ссылаемся на столбец таблицы, нам не нужно об этом беспокоиться.
Следующая строка кода ссылается на тот же столбец.
Преимущество в том, что код будет автоматически включать новые строки, добавленные в таблицу. Не требуется ручное обновление или обслуживание кода.
Мы также можем ссылаться на таблицы Excel с помощью объекта, свойств и методов ListObjects в VBA.
Определенно есть некоторые преимущества использования ListObjects, когда дело доходит до изменения структуры таблицы (добавление / удаление строк / столбцов) и свойств, а также циклического перемещения по таблице. Читайте статью моего хорошего друга Криса Ньюмана о ListObjects в VBA, в ней множество примеров.
# 11 — Получите код с помощью Macro Recorder
Macro Recorder — удивительная особенность Excel и VBA. Он создает код VBA при выполнении действий в Excel.
Например, после того, как мы включили макрос-рекордер, мы можем продолжать выполнять свою обычную работу в Excel, такую как написание формул или копирование и вставка данных. Макро-рекордер создаст весь код VBA для этих действий и сохранит его в модуле кода.
Это отличный инструмент для использования, когда мы начинаем с макросов. И это также отличный инструмент для изучения и получения фрагментов кода. Объектная модель Excel огромна, и для меня невозможно запомнить все ссылки на свойства, методы и объекты. Таким образом, средство записи макросов — отличный способ получить некоторый код для сводной таблицы, объекта списка, среза, фигуры или любого другого объекта, с которым вы не знакомы.
Макро-рекордер также имеет свои ограничения. Мы НЕ собираемся создавать код для циклов, если операторы, обработка ошибок, окна сообщений и т. Д. Нам нужно научиться писать код для реализации этих более продвинутых методов, которые позволяют нам полностью автоматизировать процессы и создавать приложения в Excel.
# 12 — The Immediate Window
Immediate Window в редакторе VB позволяет нам запускать одну строку кода. Мы можем запустить действие (метод) над объектом или вернуть результат кода обратно в Immediate Window. Может быть, мы хотим определить, сколько рабочих листов в рабочей книге.
Введите ?Worksheets.Count и нажмите Enter. Результат будет отображен в строке ниже.
Immediate Window также является местом, в которое выводится метод Debug.Print.
Сочетание клавиш для открытия окна Immediate в редакторе VB — Ctrl + G
# 13 — Назначьте сочетание клавиш для макроса
Мы также можем назначить сочетания клавиш для запуска часто используемых макросов. Я рекомендую хранить эти макросы в вашей личной книге макросов.
Чтобы назначить сочетание клавиш:
- Нажмите кнопку «Макросы» на вкладке «Разработчик» или «Просмотр» на ленте.
- Выберите файл, содержащий макрос, в раскрывающемся списке «Макросы в».
- Выберите макрос из списка.
- Нажмите кнопку «Опции…».
- Введите букву в поле «Сочетание клавиш», которому вы хотите назначить макрос. Все ярлыки начнутся с Ctrl. Вы можете удерживать клавишу Shift при наборе буквы, чтобы создать комбинацию клавиш Ctrl + Shift. Обычно это рекомендуется, потому что большинство комбинаций клавиш Ctrl + уже имеют выделенные сочетания клавиш в Excel.
- Нажмите ОК и закройте окно макроса.
- Теперь вы можете нажать комбинацию клавиш для запуска назначенного макроса.
# 14 — Проверьте, выбран ли диапазон
Иногда вам нужно убедиться, что у пользователя выбран диапазон (ячейки) до запуска макроса. Если у них выбрана форма (диаграмма, срез и т.д.), это может привести к ошибкам в вашем коде.
Например, у меня есть макрос, который удаляет пустые строки в выбранном диапазоне. Для правильной работы этого макроса пользователю необходимо сначала выбрать диапазон ячеек.
Вот код, который проверит, выбран ли диапазон.
Функция TypeName возвращает тип данных или имя объекта для данной переменной или объекта. В этом случае он оценивает Selection и возвращает тип выбранного объекта. Если это не (<>) диапазон, тогда оператор If верен.
Обычно вы хотите поместить это в начало макроса. Если диапазон НЕ выбран, появится окно сообщения (всплывающее), в котором пользователю будет предложено выбрать диапазон. Строка Exit Sub завершит макрос.
# 15 — Ctrl + Y, чтобы удалить строку кода
В редакторе VB Ctrl + Y удаляет строку кода, в которой находится текстовый курсор.
Это создает большую путаницу, поскольку Ctrl + Y обычно используется для команды «Повторить» практически во всех других приложениях, включая Excel!
Если вы посмотрите на меню «Правка» в редакторе VB, то увидите, что для «Вернуть» нет выделенного ярлыка. Мы можем использовать Alt, E, R в качестве альтернативного ярлыка для Redo.
Это всего лишь одна из тех странных причуд VBA, которые действительно приятно знать.
# 16 — Ctrl + i для быстрой информации
Это еще одна отличная комбинация клавиш, которую нужно знать. Ctrl + i отображает всплывающую подсказку, которую вы видите при написании или выполнении кода. Это позволяет вам видеть все параметры в свойстве, методе или функции.
Чтобы использовать сочетание клавиш Ctrl + i:
- Поместите текстовый курсор в слово, для которого вы хотите отобразить всплывающую подсказку.
- Нажмите Ctrl + i.
- Появится всплывающая подсказка.
- Нажмите Escape, чтобы закрыть его или переместить курсор.
Если в строке выделена переменная, и вы хотите видеть информацию о параметре вместо значения / типа данных переменной, нажмите Ctrl + Shift + i, чтобы просмотреть информацию о параметре.
# 17 — Ctrl + J открывает раскрывающийся список IntelliSense
Сочетание клавиш Ctrl + J откроет раскрывающееся меню Intellisense, в котором отображается список объектов, свойств, методов, переменных и т.д.
Обычно я использую его, когда набираю частичную строку кода и заканчиваю ее точкой, например Range («A1»).
Затем я хочу вернуться к этой строке и увидеть выпадающий Intellisense. Нажатие Ctrl + J открывает меню. В противном случае вы должны удалить период и ввести его снова.
Мы также можем использовать Ctrl + J, чтобы выбрать другую переменную из списка. Если вы где-то использовали неправильное имя переменной или вам нужно его изменить, нажмите Ctrl + J, чтобы увидеть список имен переменных. Если вы добавите префикс к своим именам переменных (он же венгерская нотация), то другие переменные должны быть довольно близки в этом списке.
№ 18 — Функции листа
Знаете ли вы, что мы можем использовать функции рабочего листа в VBA? Это функции, которые мы используем в формуле в Excel, такие как: vlookup, match, countif, max, min и т.д.
Тип WorksheetFunction. в макросе, чтобы увидеть список всех функций Excel, которые доступны в VBA.
На мой взгляд, это лучшее из обоих миров. Мы можем использовать возможности функций Excel в нашем коде VBA.
Всплывающая подсказка для функции показывает количество аргументов, но НЕ показывает имена аргументов. Поэтому обычно нам нужно набрать формулу в Excel, чтобы определить, что представляет собой каждый аргумент (если вы не запомнили его).
Функция рабочего листа, которую я чаще всего использую в VBA — это Match. Мы можем использовать Match для поиска значения и возврата номера строки или столбца ячейки, содержащей соответствующее значение. Иногда это может быть проще, чем с помощью метода Range.Find. Ознакомьтесь с моей статьей и видео о том, как найти последнюю использованную ячейку на листе, чтобы узнать больше о методе Range.Find.
Скачать PDF
Вы можете скачать печатную версию статьи в формате PDF.
Какой ваш любимый совет для VBA?
Надеюсь, вам понравился этот список и вы узнали что-то новое. Возможно, это вдохновило вас узнать больше о макросах и VBA.
Также мне интересно, какой ваш любимый трюк, который не был включен в эту статью. Пожалуйста, оставьте комментарий ниже и поделитесь своим. Здесь нет правильных или неправильных ответов, но это отличный способ учиться друг у друга.
Источник
Создание макросов в разных версиях Excel для автоматизации повторяющихся действий пользователя, которые могут быть простыми или сложными, часто повторяющимися или редко. Для использования макросов на практике обычно их приходится корректировать в редакторе VBA. Чтобы Excel мог запускать макросы, необходимо разрешить их выполнение.
Вкладка «Разработчик»
Запись макроса осуществляется встроенным рекордером, кнопка запуска которого находится на вкладке «Разработчик» главного меню программы Excel. По умолчанию эта вкладка не отображается. Добавить вкладку на панель можно следующим образом:
Excel 2010-2016
Переходим по пути: Файл — Параметры — Настроить ленту. В разделе «Настроить ленту» справа в списке «Основные вкладки» устанавливаем флажок «Разработчик» и нажимаем кнопку «OK».
Excel 2007
Переходим по пути: значок «Microsoft Office» — Параметры Excel — категория «Основные», в категории «Основные» устанавливаем флажок «Показывать вкладку «Разработчик» на ленте» и нажимаем кнопку «OK».
Excel 2000-2003
Здесь ничего отображать не надо: кнопки по работе с макросами и редактором VBA находятся в главном меню на вкладке «Сервис» — «Макрос».
На самом деле в Excel для работы с макросами используются не кнопки, а пункты меню, но, для удобства, продолжу называть их кнопками.
Запись макроса
Excel 2007-2016
На ленте во вкладке «Разработчик» нажмите кнопку «Запись макроса».
Excel 2000-2003
Пройдите по пунктам меню «Сервис» — «Макрос» — «Начать запись».
Откроется окно:
Окно «Запись макроса»
Имя макроса: можно изменить или оставить по умолчанию («Макрос» с очередным номером). Если у вас уже есть макрос с таким именем, он будет записан в новый программный модуль, который будет создан автоматически.
Сочетание клавиш: добавьте букву, если хотите запускать макрос сочетанием клавиш Ctrl+«буква». В какой раскладке вы впишите букву (например, «й» или «q»), в той и будет запускаться макрос. Если буква будет вписана в верхнем регистре («Й» или «Q»), используйте для запускa макроса сочетание клавиш Ctrl+Shift+«буква».
Сохранить в: выберите книгу, в которой должен быть сохранен макрос:
- «Эта книга» — макрос будет записан в книге, из которой рекордер был запущен (нажата кнопка «Запись макроса»).
- «Новая книга» — откроется новая книга и макрос будет записан в ней.
- «Личная книга макросов» — макрос запишется в Личную книгу макросов и будет доступен из всех открытых книг Excel.
Описание: здесь можно добавить краткое описание макроса, которое будет отображаться в окне доступных макросов при выделении его в списке.
Заполнив окно, нажимаем кнопку «OK», кнопка «Запись макроса» меняет свое название на «Остановить запись», и можно приступать, собственно, к записи макроса. Выполните на рабочем листе операции, последовательность которых вы хотите автоматизировать и, после их завершения, нажмите кнопку «Остановить запись». Макрос будет записан и появится в списке макросов.
Список макросов
Окно со списком макросов открывается во всех версиях Excel нажатием кнопки «Макросы». Выглядит оно следующим образом:
Список макросов во всех открытых книгах
- Выполнить — выделенный макрос будет запущен на выполнение.
- Войти — переход к коду макроса, запущенному и поставленному на паузу, как при обнаружении ошибки в коде.
- Изменить — переход к коду макроса для редактирования.
- Создать — кнопка станет активной при записи имени нового макроса в поле «Имя макроса».
- Удалить — удаление выделенного макроса.
- Параметры… — редактирование сочетания клавиш для запуска макроса и его описания.
- Находится в: — здесь можно выбрать все открытые книги или одну из них.
- Описание — текст, добавленный в одноименное поле при создании макроса или редактировании его параметров.
Запуск макроса
Запустить записанный макрос можно следующими способами:
- Сочетанием клавиш, указанным в параметрах макроса.
- Кнопкой «Выполнить» из окна списка макросов.
- Кнопкой «Run Sub» или клавишей «F5» из редактора VBA.
- Кнопкой, добавленной на лист Excel из раздела «Элементы управления формы» и которой назначен запускаемый макрос.
Кроме этого макрос можно назначить изображению, добавить кнопку запуска на панель быстрого доступа и в меню (на ленту).
Пример записи простого макроса
Выполните следующие действия:
Excel 2007-2016
- Откройте книгу Excel или создайте новую и сохраните ее как книгу с поддержкой макросов (.xlsm).
- На вкладке «Разработчик» нажмите кнопку «Запись макроса».
- В окне «Запись макроса» нажмите кнопку «OK», оставив параметры по умолчанию.
- Перейдите на вкладку «Главная» и выберите любой цвет заливки ячеек.
- Нажмите кнопку «Остановить запись».
Excel 2000-2003
- Откройте книгу Excel или создайте новую и сохраните ее с расширением по умолчанию (.xls).
- Включите запись макроса, пройдя по пунктам меню «Сервис» — «Макрос» — «Начать запись».
- В окне «Запись макроса» нажмите кнопку «OK», оставив параметры по умолчанию.
- На панели инструментов выберите любой цвет заливки ячеек.
- Нажмите кнопку «Остановить запись».
В результате будет записан простейший макрос окрашивания фона выделенной ячейки или диапазона.
Откройте список макросов, выберите записанный макрос и нажмите кнопку «Изменить». Вы увидите код вашего макроса:
Sub Макрос1() ‘ ‘ Макрос1 Макрос ‘ ‘ With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 5296274 .TintAndShade = 0 .PatternTintAndShade = 0 End With End Sub |
Число (5296274) в вашем примере будет другим, в зависимости от выбранного цвета заливки.
Выберите на активном листе любую ячейку или диапазон, вернитесь в редактор VBA и нажмите клавишу «F5» (курсор должен находиться в любом месте внутри кода запускаемого макроса). На активном листе выделенный диапазон окрасится в выбранный при записи макроса цвет.
Рекордер макросов может записывать много лишних строк, без которых можно обойтись. Точно также макрос будет работать и в такой редакции:
Sub Макрос2() Selection.Interior.Color = 5296274 End Sub |
Скопируйте этот код и вставьте его внизу, под вашим макросом, в редакторе VBA (числовое значение цвета можете изменить на свое или оставить, как в примере). Проверьте его работоспособность, выбрав незакрашенные ячейки и запустив макрос клавишей «F5», не забыв о том, что курсор должен находиться внутри этого макроса.
Имена макросов должны различаться в пределах одного модуля, но еще лучше — всем макросам одной книги давать уникальные имена.
Назначение макроса кнопке
Теперь давайте назначим записанный макрос (любой из двух) кнопке, добавленной на лист Excel из раздела «Элементы управления формы»:
Excel 2007-2016
- На вкладке «Разработчик» нажмите кнопку «Вставить» и в разделе «Элементы управления формы» кликните по изображению кнопки.
- Переведите курсор на табличную область листа, курсор примет вид крестика, и кликните левой кнопкой мыши.
- В открывшемся окне «Назначить макрос объекту» выберите один из новых макросов и нажмите кнопку «OK». Если нажать кнопку «Отмена», новая кнопка будет создана без назначенного макроса. Его можно будет назначить позднее, кликнув по ней правой кнопкой мыши и выбрав в контекстном меню «Назначить макрос…»
Excel 2000-2003
- Отобразите панель инструментов «Формы», пройдя по пунктам меню «Вид» — «Панели инструментов» — «Формы».
- Кликните по Кнопке на панели инструментов «Формы», затем переведите курсор на табличную часть рабочего листа, нажмите левую кнопку мыши и, не отпуская ее, нарисуйте прямоугольник (контур кнопки) нужного размера, затем отпустите кнопку мыши.
- В открывшемся окне «Назначить макрос объекту» выберите один из новых макросов и нажмите кнопку «OK». Если нажать кнопку «Отмена», новая кнопка будет создана без назначенного макроса. Его можно будет назначить позднее, кликнув по ней правой кнопкой мыши и выбрав в контекстном меню «Назначить макрос…»
Кнопка создана. Выберите ячейку или диапазон и нажмите созданную кнопку. Цвет фона изменится.
Вы можете записать еще один такой же макрос, только выбрать на палитре «Нет заливки», создать еще одну кнопку и назначить ей вновь созданный макрос. Теперь, первая кнопка будет окрашивать выделенный диапазон, а вторая очищать его от заливки.
Сокращенный вариант кода по очистке фона будет выглядеть так:
Sub Макрос3() Selection.Interior.Pattern = xlNone End Sub |
Чтобы отредактировать кнопку — изменить надпись, шрифт, размер, переместить и т.д. — используйте контекстное меню и маркеры, появляющиеся после клика по ней правой кнопкой мыши. Если вы хотите, чтобы кнопка не уезжала из зоны видимости при прокрутке листа, закрепите верхнюю строку и разместите кнопку на ней.
Остановка макроса (процедуры)
При тестировании нового макроса (процедуры) может возникнуть бесконечный цикл, который приведет к зависанию Excel. Способы остановки выполнения бесконечного цикла:
- Если панель инструментов редактора VBA доступна, нажмите кнопку Break или Reset.
- Если редактор VBA не доступен, нажмите сочетание клавиш Ctrl+Break.
- Если сочетание клавиш Ctrl+Break не срабатывает, закройте программу Excel через Диспетчер задач.
- Если Диспетчер задач долго не открывается, остается только выключение компьютера большой кнопкой или кнопкой «Перезагрузка».
Группа: Пользователи Ранг: Прохожий Сообщений: 1
Замечаний: |
Здравствуйте! нужна ваша помощь. У меня есть макрос. он иногда выдаёт ошибку на любом участке. и происходит это не из за ошибки кода,а из за переполнения оперативной памяти или если 2-3 копии excel работают, с таким же макросом, то тоже может быть сбой и выскакивает то окно где написано END и DEBUG.
Мне нужно , что бы макрос в случае вот таких вот ситуаций продолжал работать методом повторного выполнения операции над которой и случилась ошибка(чтобы заново её выполнил). Я немного поискал в интернете и выяснил, что за это отвечает оператор Resume 0. Есть оператор Resume Next, который игнорирует ошибку и макрос продолжает работать со следующей операции. Но мне это не подойдёт. мне нужно именно, чтобы макрос заново с операции на которой случилась ошибка продолжил работать(т.е. выполнил её снова)
Только вот куда этот Resume 0 вставлять? Хотелось бы чтобы поставить этот Resume 0 в начале всего кода макроса, и не париться. Но как это сделать?
макрос у меня очень простой. сохранение листа в файл:
Sub Сохранение()
Application.ScreenUpdating = False
Dim Fname As String
Sheets(Array(«2»)).Copy
With ActiveWorkbook
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
Application.DisplayAlerts = False
.SaveAs Filename:=ThisWorkbook.Path & «» & «1.xls», FileFormat:=56
Application.ScreenUpdating = True
‘Application.DisplayAlerts = True
End With
ActiveWorkbook.Close
End Sub
Вы узнали, что макрос хранится в виде кода VBA в Excel. Вы также узнали, что можете напрямую написать код для создания макроса в редакторе VBA. Однако, как и в случае с любым кодом, даже код макроса может иметь дефекты, и макрос может работать не так, как вы ожидали.
Это требует изучения кода, чтобы найти дефекты и исправить их. Термин, который используется для этого действия в разработке программного обеспечения, является отладкой.
Отладка VBA
Редактор VBA позволяет приостановить выполнение кода и выполнить любую необходимую задачу отладки. Ниже приведены некоторые из задач отладки, которые вы можете выполнить.
- Пошаговое выполнение кода
- Использование точек останова
- Резервное копирование или движение вперед в коде
- Не переступая через каждую строку кода
- Запрашивать что-либо во время пошагового выполнения кода
- Остановка казни
Это лишь некоторые из задач, которые вы можете выполнять в среде отладки VBA.
Пошаговое выполнение кода
Первое, что вам нужно сделать для отладки, это пройти по коду при его выполнении. Если у вас есть представление о том, какая часть кода, вероятно, создает дефект, вы можете перейти к этой строке кода. В противном случае вы можете выполнить код построчно, выполнить резервное копирование или продвинуться вперед в коде.
Вы можете перейти к коду из диалогового окна «Макрос» в рабочей книге или из самого редактора VBA.
Войдя в код из рабочей книги
Чтобы войти в код из рабочей книги, выполните следующие действия:
- Нажмите вкладку VIEW на ленте.
- Нажмите Макросы.
- Выберите View Macros из выпадающего списка.
Откроется диалоговое окно «Макрос».
- Нажмите на имя макроса.
- Нажмите кнопку Шаг в.
Откроется редактор VBA и в окне кода появится код макроса. Первая строка в коде макроса будет выделена желтым цветом.
Шаг в код от редактора VBA
Чтобы войти в код из редактора VBA, выполните следующие действия:
- Нажмите вкладку РАЗРАБОТЧИК на ленте.
- Нажмите Visual Basic. Откроется редактор VBA.
- Нажмите на модуль, который содержит код макроса.
Код макроса появится в окне кода.
-
Перейдите на вкладку «Отладка» на ленте.
-
Выберите Step into из выпадающего списка.
Перейдите на вкладку «Отладка» на ленте.
Выберите Step into из выпадающего списка.
Первая строка в коде макроса будет выделена. Код находится в режиме отладки, и параметры в раскрывающемся списке «Отладка» станут активными.
Резервное копирование или движение вперед в коде
Вы можете двигаться вперед или назад в коде, выбрав Step Over или Step Out.
Не переступая через каждую строку кода
Вы можете избежать пошагового прохождения каждого строкового кода, если вы идентифицируете потенциальную часть кода, которую необходимо обсудить, выбрав Run to Cursor.
Использование точек останова
Кроме того, вы можете установить точки останова в определенных строках кода и выполнить код, наблюдая результаты в каждой точке останова. Вы можете переключать точку останова и очищать все точки останова, если и когда это необходимо.
Использование часов
Вы можете добавить часы во время отладки, чтобы оценить выражение и остановить выполнение, когда переменная достигает определенного значения. Это означает, что вы настраиваете выражение наблюдения, которое будет отслеживаться до тех пор, пока оно не станет истинным, а затем макрос остановится и оставит вас в режиме прерывания. VBA предоставляет вам несколько типов часов на выбор, чтобы выполнить то, что вы ищете.
Остановка казни
Во время отладки, в любой момент, если вы нашли подсказку о том, что идет не так, вы можете остановить выполнение, чтобы расшифровать его дальше.
Если вы опытный разработчик, терминология отладки вам знакома, а опции отладки в редакторе VBA сделают вашу жизнь проще. Даже в противном случае освоение этого навыка не займет много времени, если вы изучите VBA и поймете код.
Создание макросов в Microsoft Excel
Макросы в Microsoft Excel позволяют значительно ускорить работу с документами в этом табличном редакторе. Эта возможность достигается путем автоматизации повторяющихся действий, записанных в специальный код. Давайте разберем, как создать макросы в программе и как их можно отредактировать.
Способы записи макросов в Excel
Макрос записывается двумя способами: автоматически и вручную. Воспользовавшись первым вариантом, вы просто записываете определенные действия в Microsoft Excel, которые выполняете в данный момент времени. Потом можно будет воспроизвести эту запись. Такой метод очень легкий и не требует знания кода, но применение его на практике довольно ограничено. Ручная запись, наоборот, требует знаний программирования, так как код набирается вручную с клавиатуры. Однако грамотно написанный таким образом код может значительно ускорить выполнение процессов.
Вариант 1: Автоматическая запись макросов
Прежде чем начать автоматическую запись макросов, нужно включить их в программе Microsoft Excel. Для этого воспользуйтесь нашим отдельным материалом.
Когда все готово, приступаем к записи.
-
Перейдите на вкладку «Разработчик». Кликните по кнопке «Запись макроса», которая расположена на ленте в блоке инструментов «Код».
Когда алгоритм был выполнен, щелкаем на кнопку «Остановить запись». Эта кнопка преобразовалась из кнопки «Запись макроса» после включения записи.
Запуск макроса
Для проверки того, как работает записанный макрос, выполним несколько простых действий.
-
Кликаем в том же блоке инструментов «Код» по кнопке «Макросы» или жмем сочетание клавиш Alt + F8.
Редактирование макроса
Естественно, при желании вы можете корректировать созданный макрос, чтобы всегда поддерживать его в актуальном состоянии и исправлять некоторые неточности, допущенные во время процесса записи.
-
Снова щелкаем на кнопку «Макросы». В открывшемся окне выбираем нужный и кликаем по кнопке «Изменить».
Открывается «Microsoft Visual Basic» (VBE) – среда, где происходит их редактирование.
Range(«C3»).Select
ActiveCell.FormulaR1C1 = «11»
Выражение 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» .
Вариант 2: Написание кода макроса с нуля
Продвинутые пользователи могут выполнять не только редактирование и оптимизацию записанных макросов, но и записывать их код с нуля.
-
Чтобы приступить к этому, нужно нажать на кнопку «Visual Basic», которая расположена в самом начале ленты разработчика.
Откроется окно редактора VBE, которое уже быдло продемонстрировано в предыдущем варианте.
Как видим, макросы в Microsoft Excel могут значительно упростить выполнение рутинных и однообразных процессов. Тем не менее в большинстве случаев для этого больше подходят макросы, код которых написан вручную, а не автоматически записанные действия. Кроме того, его код можно оптимизировать через редактор VBE для ускорения процесса выполнения задачи.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Автоматизация задач с помощью средства записи макросов — Excel
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Для автоматизации повторяющихся задач в Microsoft Excel можно быстро записать макрос. Предположим, у вас есть даты в различном формате и вы хотите применить ко всем из них один формат. Это можно сделать с помощью макроса. Вы можете записать макрос, который применяет нужный формат, а затем запускать его при необходимости.
При записи макроса записываются все действия, описанные в Visual Basic для приложений (VBA) коде. Эти действия могут включать ввод текста или чисел, нажатие ячеек или команд на ленте или в меню, форматирование ячеек, строк или столбцов, а также импорт данных из внешнего источника, например Microsoft Access. Приложение Visual Basic (VBA) — это подмножество мощного языка программирования Visual Basic, которое входит в большинство приложений Office. Несмотря на то, что VBA обеспечивает возможность автоматизации процессов между приложениями Office, вам не нужно знать код VBA или программное программирование, если это нужно.
Важно знать, что при записи макроса регистрируются почти все ваши действия. Поэтому если вы допустите ошибку, например нажмете не ту кнопку, средство записи макросов зарегистрирует это действие. В таком случае можно снова записать всю последовательность или изменить код VBA. Поэтому перед записью процесса следует хорошо проработать его. Чем точнее вы запишете последовательность, тем более эффективно будет работать макрос.
Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее. Дополнительные сведения см. в статье Отображение вкладки «Разработчик».
Запись макроса
Перед записью макросов полезно знать следующее:
Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.
Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.
В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.
Чтобы записать макрос, следуйте инструкциям ниже.
На вкладке Разработчик в группе Код нажмите кнопку Запись макроса.
В поле Имя макроса введите название макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.
Примечание: Первым символом имени макроса должна быть буква. Последующие символы могут быть буквами, цифрами или знаками подчеркивания. В имени макроса не должно содержаться пробелов; в качестве разделителей слов следует использовать знаки подчеркивания. Если используется имя макроса, являющееся ссылкой на ячейку, может появиться сообщение об ошибке, указывающее на недопустимое имя макроса..
Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш с CTRL+SHIFT, так как они будут заменять собой совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос. Например, если назначить сочетание клавиш CTRL+Z (Отменить), вы не сможете использовать его для функции «Отменить» в данном экземпляре Excel.
В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.
Как правило, макрос сохраняется в указанном расположении книги , но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите пункт Личная книга макросов . Если выбрать команду Личная книга макросов, Excel создаст скрытую личную книгу макросов (личное. xlsb), если она еще не существует, и сохранит макрос в этой книге.
В поле Описание при необходимости введите краткое описание действий макроса.
Хотя поле «Описание» является необязательным, рекомендуется его заполнить. Кроме того, желательно ввести понятное описание, которое будет полезно вам и всем, кто запускает макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.
Чтобы начать запись макроса, нажмите кнопку ОК.
Выполните действия, которые нужно записать.
На вкладке разработчик в группе код нажмите кнопку остановить запись .
Работа с макросами, записанными в Excel
На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. Кроме того, можно нажать клавиши ALT+F8. При этом откроется диалоговое окно Макрос.
Внимание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.
Ниже приведены дополнительные сведения о работе с макросами в Excel.
Сведения о параметрах безопасности макросов и их значении.
Макросы можно запускать различными способами, например с помощью сочетания клавиш, графического объекта, панели быстрого доступа, кнопки или даже при открытии книги.
С помощью редактора Visual Basic можно изменять макросы, присоединенные к книге.
Если книга содержит макрос VBA, который нужно использовать где-либо еще, этот модуль можно скопировать в другую книгу с помощью редактора Microsoft Visual Basic.
Назначение макроса объекту, фигуре или графическому элементу
На листе щелкните правой кнопкой мыши объект, рисунок, фигуру или элемент, которому нужно назначить существующий макрос, а затем выберите команду назначить макрос.
В поле Назначить макроса выберите макрос, который вы хотите назначить.
Вы можете назначить макрос значку и добавить его на панель быстрого доступа или ленту.
Вы можете назначать макросы формам и элементам ActiveX на листе.
Узнайте, как включать и отключать макросы в файлах Office.
Открытие редактора Visual Basic
Нажмите клавиши ALT+F11.
Узнайте, как найти справку по элементам Visual Basic.
Работа с записанным кодом в редакторе Visual Basic (VBE)
С помощью редактора Visual Basic (VBE) вы можете добавлять в записанный код собственные переменные, управляющие структуры и другие элементы, которые не поддерживает средство записи макросов. Так как средство записи макросов фиксирует почти каждый шаг, выполняемый во время записи, может также потребоваться удалить ненужный код. Просмотр записанного кода — отличный способ научиться программировать на VBA или отточить свои навыки.
Пример изменения записанного кода можно найти в статье Начало работы с VBA в Excel.
Запись макроса
Перед записью макросов полезно знать следующее:
Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.
Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.
В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.
Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее.
Перейдите в раздел настройки _гт_ Excel. панель инструментов _Гт_ ленты _амп_.
В категории Настроить ленту в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку Сохранить.
Чтобы записать макрос, следуйте инструкциям ниже.
На вкладке Разработчик нажмите кнопку Запись макроса.
В поле Имя макроса введите название макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.
Примечание: Первым символом имени макроса должна быть буква. Последующие символы могут быть буквами, цифрами или знаками подчеркивания. В имени макроса не должно содержаться пробелов; в качестве разделителей слов следует использовать знаки подчеркивания. Если используется имя макроса, являющееся ссылкой на ячейку, может появиться сообщение об ошибке, указывающее на недопустимое имя макроса..
В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.
Как правило, макрос сохраняется в указанном расположении книги , но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите пункт Личная книга макросов. Если выбрать команду Личная книга макросов, в Excel будет создана скрытая личная книга макросов (личное. XLSB), если он еще не существует, и сохранение макроса в этой книге. Книги в этой папке открываются автоматически при запуске Excel, а код, хранящийся в личной книге макросов, будет указан в диалоговом окне Макрос, которое описано в следующем разделе.
Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш, которые еще не назначены другим командам, так как они будут переопределять совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос.
В поле Описание при необходимости введите краткое описание действий макроса.
Хотя поле «Описание» является необязательным, рекомендуется его заполнить. Полезно ввести понятное описание с любой полезной информацией, которая может быть полезна Вам или другим пользователям, которые будут запускать макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.
Чтобы начать запись макроса, нажмите кнопку ОК.
Выполните действия, которые нужно записать.
На вкладке Разработчик щелкните Остановить запись.
Работа с макросами, записанными в Excel
На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. При этом откроется диалоговое окно Макрос.
Примечание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.
Ниже приведены дополнительные сведения о работе с макросами в Excel.
VBA Excel. Макросы (запись, запуск, пример)
Создание макросов в разных версиях Excel для автоматизации повторяющихся действий пользователя, которые могут быть простыми или сложными, часто повторяющимися или редко. Для использования макросов на практике обычно их приходится корректировать в редакторе VBA. Чтобы Excel мог запускать макросы, необходимо разрешить их выполнение.
Вкладка «Разработчик»
Запись макроса осуществляется встроенным рекордером, кнопка запуска которого находится на вкладке «Разработчик» главного меню программы Excel. По умолчанию эта вкладка не отображается. Добавить вкладку на панель можно следующим образом:
Excel 2010-2016
Переходим по пути: Файл — Параметры — Настроить ленту. В разделе «Настроить ленту» справа в списке «Основные вкладки» устанавливаем флажок «Разработчик» и нажимаем кнопку «OK».
Excel 2007
Переходим по пути: значок «Microsoft Office» — Параметры Excel — категория «Основные», в категории «Основные» устанавливаем флажок «Показывать вкладку «Разработчик» на ленте» и нажимаем кнопку «OK».
Excel 2000-2003
Здесь ничего отображать не надо: кнопки по работе с макросами и редактором VBA находятся в главном меню на вкладке «Сервис» — «Макрос».
На самом деле в Excel для работы с макросами используются не кнопки, а пункты меню, но, для удобства, продолжу называть их кнопками.
Запись макроса
Excel 2007-2016
На ленте во вкладке «Разработчик» нажмите кнопку «Запись макроса».
Excel 2000-2003
Пройдите по пунктам меню «Сервис» — «Макрос» — «Начать запись».
Окно «Запись макроса»
Имя макроса: можно изменить или оставить по умолчанию («Макрос» с очередным номером). Если у вас уже есть макрос с таким именем, он будет записан в новый программный модуль, который будет создан автоматически.
Сочетание клавиш: добавьте букву, если хотите запускать макрос сочетанием клавиш Ctrl+«буква». В какой раскладке вы впишите букву (например, «й» или «q»), в той и будет запускаться макрос. Если буква будет вписана в верхнем регистре («Й» или «Q»), используйте для запускa макроса сочетание клавиш Ctrl+Shift+«буква».
Сохранить в: выберите книгу, в которой должен быть сохранен макрос:
- «Эта книга» — макрос будет записан в книге, из которой рекордер был запущен (нажата кнопка «Запись макроса»).
- «Новая книга» — откроется новая книга и макрос будет записан в ней.
- «Личная книга макросов» — макрос запишется в Личную книгу макросов и будет доступен из всех открытых книг Excel.
Описание: здесь можно добавить краткое описание макроса, которое будет отображаться в окне доступных макросов при выделении его в списке.
Заполнив окно, нажимаем кнопку «OK», кнопка «Запись макроса» меняет свое название на «Остановить запись», и можно приступать, собственно, к записи макроса. Выполните на рабочем листе операции, последовательность которых вы хотите автоматизировать и, после их завершения, нажмите кнопку «Остановить запись». Макрос будет записан и появится в списке макросов.
Список макросов
Окно со списком макросов открывается во всех версиях Excel нажатием кнопки «Макросы». Выглядит оно следующим образом:
Список макросов во всех открытых книгах
- Выполнить — выделенный макрос будет запущен на выполнение.
- Войти — переход к коду макроса, запущенному и поставленному на паузу, как при обнаружении ошибки в коде.
- Изменить — переход к коду макроса для редактирования.
- Создать — кнопка станет активной при записи имени нового макроса в поле «Имя макроса».
- Удалить — удаление выделенного макроса.
- Параметры. — редактирование сочетания клавиш для запуска макроса и его описания.
- Находится в: — здесь можно выбрать все открытые книги или одну из них.
- Описание — текст, добавленный в одноименное поле при создании макроса или редактировании его параметров.
Запуск макроса
Запустить записанный макрос можно следующими способами:
- Сочетанием клавиш, указанным в параметрах макроса.
- Кнопкой «Выполнить» из окна списка макросов.
- Кнопкой «Run Sub» или клавишей «F5» из редактора VBA.
- Кнопкой, добавленной на лист Excel из раздела «Элементы управления формы» и которой назначен запускаемый макрос.
Кроме этого макрос можно назначить изображению, добавить кнопку запуска на панель быстрого доступа и в меню (на ленту).
Пример записи простого макроса
Выполните следующие действия:
Excel 2007-2016
- Откройте книгу Excel или создайте новую и сохраните ее как книгу с поддержкой макросов (.xlsm).
- На вкладке «Разработчик» нажмите кнопку «Запись макроса».
- В окне «Запись макроса» нажмите кнопку «OK», оставив параметры по умолчанию.
- Перейдите на вкладку «Главная» и выберите любой цвет заливки ячеек.
- Нажмите кнопку «Остановить запись».
Excel 2000-2003
- Откройте книгу Excel или создайте новую и сохраните ее с расширением по умолчанию (.xls).
- Включите запись макроса, пройдя по пунктам меню «Сервис» — «Макрос» — «Начать запись».
- В окне «Запись макроса» нажмите кнопку «OK», оставив параметры по умолчанию.
- На панели инструментов выберите любой цвет заливки ячеек.
- Нажмите кнопку «Остановить запись».
В результате будет записан простейший макрос окрашивания фона выделенной ячейки или диапазона.
Откройте список макросов, выберите записанный макрос и нажмите кнопку «Изменить». Вы увидите код вашего макроса:
Число (5296274) в вашем примере будет другим, в зависимости от выбранного цвета заливки.
Выберите на активном листе любую ячейку или диапазон, вернитесь в редактор VBA и нажмите клавишу «F5» (курсор должен находиться в любом месте внутри кода запускаемого макроса). На активном листе выделенный диапазон окрасится в выбранный при записи макроса цвет.
Рекордер макросов может записывать много лишних строк, без которых можно обойтись. Точно также макрос будет работать и в такой редакции:
Скопируйте этот код и вставьте его внизу, под вашим макросом, в редакторе VBA (числовое значение цвета можете изменить на свое или оставить, как в примере). Проверьте его работоспособность, выбрав незакрашенные ячейки и запустив макрос клавишей «F5», не забыв о том, что курсор должен находиться внутри этого макроса.
Имена макросов должны различаться в пределах одного модуля, но еще лучше — всем макросам одной книги давать уникальные имена.
Назначение макроса кнопке
Теперь давайте назначим записанный макрос (любой из двух) кнопке, добавленной на лист Excel из раздела «Элементы управления формы»:
Excel 2007-2016
- На вкладке «Разработчик» нажмите кнопку «Вставить» и в разделе «Элементы управления формы» кликните по изображению кнопки.
- Переведите курсор на табличную область листа, курсор примет вид крестика, и кликните левой кнопкой мыши.
- В открывшемся окне «Назначить макрос объекту» выберите один из новых макросов и нажмите кнопку «OK». Если нажать кнопку «Отмена», новая кнопка будет создана без назначенного макроса. Его можно будет назначить позднее, кликнув по ней правой кнопкой мыши и выбрав в контекстном меню «Назначить макрос. »
Excel 2000-2003
-
- Отобразите панель инструментов «Формы», пройдя по пунктам меню «Вид» — «Панели инструментов» — «Формы».
- Кликните по Кнопке на панели инструментов «Формы», затем переведите курсор на табличную часть рабочего листа, нажмите левую кнопку мыши и, не отпуская ее, нарисуйте прямоугольник (контур кнопки) нужного размера, затем отпустите кнопку мыши.
- В открывшемся окне «Назначить макрос объекту» выберите один из новых макросов и нажмите кнопку «OK». Если нажать кнопку «Отмена», новая кнопка будет создана без назначенного макроса. Его можно будет назначить позднее, кликнув по ней правой кнопкой мыши и выбрав в контекстном меню «Назначить макрос. »
Кнопка создана. Выберите ячейку или диапазон и нажмите созданную кнопку. Цвет фона изменится.
Вы можете записать еще один такой же макрос, только выбрать на палитре «Нет заливки», создать еще одну кнопку и назначить ей вновь созданный макрос. Теперь, первая кнопка будет окрашивать выделенный диапазон, а вторая очищать его от заливки.
Сокращенный вариант кода по очистке фона будет выглядеть так:
Чтобы отредактировать кнопку — изменить надпись, шрифт, размер, переместить и т.д. — используйте контекстное меню и маркеры, появляющиеся после клика по ней правой кнопкой мыши. Если вы хотите, чтобы кнопка не уезжала из зоны видимости при прокрутке листа, закрепите верхнюю строку и разместите кнопку на ней.
Запись макроса в Excel
Простую последовательность действий, которую нужно повторить несколько раз, можно записать в виде программного кода и сохранить как макрос. Если последовательность действий записана в макрос, то выполнять её можно снова и снова, просто запуская этот макрос. Это гораздо эффективнее, чем выполнять раз за разом одни и те же действия вручную.
Чтобы записать макрос, нужно включить режим записи. Это можно сделать на вкладке Вид (View) в разделе Макросы (Macros) или в меню Сервис (Tools), если у Вас Excel 2003. Ниже на картинках показано, как выглядят эти меню.
Далее откроется диалоговое окно Запись макроса (Record Macro), как показано на картинке ниже:
Здесь, по желанию, можно ввести имя и описание для макроса. Рекомендуется давать макросу такое имя, чтобы, вернувшись к нему спустя некоторое время, можно было без труда понять, для чего этот макрос нужен. Так или иначе, если не ввести для макроса имя, то Excel автоматически назовёт его Макрос1, Макрос2 и так далее.
Здесь же можно назначить сочетание клавиш для запуска записанного макроса. Запускать макрос таким способом будет значительно проще. Однако будьте осторожны! Если случайно назначить для макроса одно из предустановленных клавиатурных сочетаний Excel (например, Ctrl+C), то в дальнейшем макрос может быть запущен случайно.
Когда макросу дано подходящее имя и (при желании) задано сочетание клавиш, нажмите ОК, чтобы запустить запись макроса. С этого момента каждое действие (ввод данных, выделение ячеек, изменение формата ячеек, пролистывание листа и так далее) будет записано в макрос и сохранено в виде кода VBA.
При включении режима записи макроса в строке состояния (внизу слева) появляется кнопка Стоп. В Excel 2003 эта кнопка находится на плавающей панели инструментов.
Нажмите Стоп, когда выполните все действия, которые должны быть записаны в макрос. Теперь код записанного макроса сохранён в модуле редактора Visual Basic.
Параметр «Относительные ссылки»
Если перед началом записи макроса включить параметр Относительные ссылки (Use Relative References), то все ссылки в записываемом макросе будут создаваться как относительные. Если же параметр выключен, то при записи макроса будут создаваться абсолютные ссылки (подробнее об этих двух типах ссылок можно узнать в статьях, посвящённых теме ссылок на ячейки в Excel).
Параметр Относительные ссылки (Use Relative References) находится в разделе Макросы (Macros) на вкладке Вид (View). В Excel 2003 этот параметр расположен на плавающей панели инструментов.
Просмотр кода VBA
Код VBA, записанный в макрос, размещается в модуле, который можно просмотреть в редакторе Visual Basic. Редактор можно запустить нажатием Alt+F11 (одновременное нажатие клавиш Alt и F11).
Код находится в одном из модулей, которые расположены в окне Project слева от области редактирования. Если дважды кликнуть по Module1 в окне Project, то справа появится код записанного макроса.
Запуск записанного макроса в Excel
Записывая макрос, Excel всегда создаёт процедуру Sub (не Function). Если при создании макроса к нему было прикреплено сочетание клавиш, то именно с его помощью запустить макрос будет проще всего. Существует и другой способ запустить макрос:
- Нажмите Alt+F8 (одновременно нажмите клавиши Alt и F8);
- В появившемся списке макросов выберите тот, который нужно запустить;
- Нажмите кнопку Выполнить (Run).
Ограничения
Инструмент Excel для записи макросов – это очень простой способ создавать код VBA, но подходит он только для создания самых простых макросов. Дело в том, что этот инструмент не умеет использовать многие возможности VBA, такие как:
- Константы, переменные и массивы;
- Выражения IF;
- Циклы;
- Обращения к встроенным функциям или внешним процедурам.
Как уже было сказано, инструмент записи макросов может создавать только процедуры Sub, так как не может возвращать значение. Процедурам Sub нельзя передавать какие-либо аргументы, хотя они могут распознавать текущие активные ячейки, диапазоны или листы, а также значения, хранящиеся в ячейках книги. Кроме того, нужно сказать, что сгенерированный код не всегда является оптимальным для рассматриваемой последовательности действий.
Автоматическое создание кода VBA в Excel отлично работает для простых макросов, но если нужно построить более сложный макрос, то придётся научиться писать код VBA самостоятельно. Тем не менее, запись макроса в Excel – это отличны инструмент, при помощи которого можно создавать первоначальный код, а в дальнейшем исправлять или вставлять его в более сложные макросы.
Как создать макрос в Excel?
Применение макросов в Excel помогает автоматизировать процессы и избежать повторения большого количества рутинных действий, которые мы не хотим выполнять вручную.
Давайте поподробнее разберемся в тонкостях работы с макросами.
Зачастую нам приходится выполнять одни и те же действия в Excel большое количество раз. C такой «рутинной работой» рано или поздно сталкивается почти каждый пользователь Excel — формирование ежедневных и еженедельных отчетов, обработка однообразных данных и т.д.
Например, Вам каждую неделю присылают отчет по продажам, который необходимо обработать, произвести некоторые расчеты, составить сводную таблицу и получить итог по результатам недели. Предположим, что на всю работу Вы тратите 3 часа, с помощью разработки и создания макроса Вы можете сократить время выполняемой работы до нескольких минут.
Макрос в Excel — это программа, записанная на языке программирования Visual Basic for Applications (VBA), которая выполняет определенную последовательность действий.
Как записать макрос в Excel?
В Excel есть встроенная программа макрорекордер, которая записывает каждое действие пользователя и переводит его в язык программирования VBA.
Такой способ записи макроса не требует специальных знаний программирования, поэтому запись макроса с помощью макрорекордера — самый простой способ создания макроса.
Однако при работе с макрорекордером есть свои недостатки:
- Макрорекордер записывает все Ваши действия, в том числе и случайно сделанные ошибки. Поэтому перед записью макроса четко продумайте список выполняемых действий — это поможет избежать ошибок;
- Макрорекордер записывает действия, выполненные только в программе Excel. Переключения на другие программы макрорекордер не записывает;
- Макрорекордер записывает только те действия, для которых есть кнопки или команды меню в Excel.
Запись макроса макрорекордером
Чтобы записать макрос в Excel нужно в нижней панели нажать на кнопку «Запись макроса» или перейти в панели инструментов на вкладку «Вид» в группу «Макросы» и выбрать «Запись макроса»:
Настраиваем поля записываемого макроса (можно оставить поля пустыми):
Выбор имени макроса и сочетания клавиш
- Имя макроса — произвольное имя на русском или английском языке;
- Сочетание клавиш — комбинация клавиш, которой в дальнейшем будет запускаться макрос;
- Сохранить в — книга в которой будет сохраняться макрос.
Остановить запись макроса можно двумя способами: в нижней панели нажать на кнопку «Остановить запись» или перейти в панели инструментов на вкладку «Вид» в группу «Макросы» и выбрать «Остановить запись»:
Конец записи макроса
Как выполнить макрос в Excel?
Чтобы выполнить и запустить макрос можно нажать выбранное сочетание клавиш или перейти на вкладку «Вид» в группу «Макросы», выбрать «Макросы» и нажать кнопку «Выполнить» или нажать сочетание клавиш Alt+F8:
Просмотр кода макроса
Для просмотра кода макроса нужно перейти на вкладку «Вид» в группу «Макросы» и выбрать «Макросы»,а затем нажать кнопку «Изменить»:
При знании языка VBA код макроса можно либо изменить, например, для удаления ошибок или для добавления новых действий для данного макроса, либо создать макрос с нуля на Visual Basic.
Для создания макроса в Excel нужно выполнить следующие шаги:
- Создание макроса. Выбрать на панели инструментов «Вид» ->«Макросы» ->«Запись макроса» и при необходимости заполнить настройки макроса;
- Запись макроса. Выполнить требуемые действия;
- Остановить запись макроса. Выбрать на панели инструментов «Вид» ->«Макросы» ->«Остановить запись».
Удачи вам и до скорых встреч на страницах блога Tutorexcel.ru!
Поделиться с друзьями:
Поиск по сайту:
Похожие статьи:
Комментарии (7)
что мне надо сделать чтобы не запускать его постоянно в VB при открытии документа, а что бы он делал это сам автоматически. И еще вопрос можно ли как-то в поле со списком или в combobox вставить названия таблиц, и при выборе определенного названия в определенном диапазоне открывалась нужная таблица? Спасибо.
Вам необходимо зайти в VBA, выбрать в редакторе модуль «ЭтаКнига» и затем в код модуля добавить стандартный макрос:
Автоматизация задач с помощью средства записи макросов — Excel
Смотрите также кнопку ОК. 1 2 3Скачать бесплатно исходные (второй способ). выполняем необходимое действиерабочего листа пор, пока значение по Excel VBA. Например, при команде клавиш, при нажатии команду или прописную букву. Office и другиеИзменение макроса сохранить макрос. будет выполняться толькоПримечание: 4 коды VBA-макросов с
Необходимые инструменты находятся во MsgBox «Вы выбралиЛист2 ‘текущего числа ФибоначчиПервоначально эта процедура «Range(«C4»).Select» выбирается ячейка на которые макросНазначить макрос Рекомендуется использовать сочетания программы, которые поддерживаютС помощью редактора VisualКак правило, макросы сохраняются для ячеек этого Мы стараемся как можноМакросы позволяют автоматизировать процессы
Каждый пользователь сталкивался с
широкими возможностями для вкладке «Разработчик». Так ячейку B1″ Endи выполняет с не превысит 1000Sub C4. Оператор «ActiveCell.FormulaR1C1» будет запускаться. Первой. клавиш, которые еще Visual Basic для Basic можно изменять в расположении диапазона. Поэтому если оперативнее обеспечивать вас работы с документами тем, что иногда автоматической обработки, редактирования как по умолчанию If End Sub ними арифметические операции. Do While iFib_Nextбыла приведена, как используется для записи клавишей обязательно должнаВ поле не назначены другим приложений (VBA). Например, макросы, присоединенные кЭта книга вы добавите в
актуальными справочными материалами и не только… в Excel не и форматирования больших вкладка часто неНа примере этой процедуры Результаты заносятся в < 1000 If пример использования комментариев действий в формулах, быть клавиша Ctrl,Назначить макроса командам, так как вы можете записать книге., но если вы диапазон новую строку, на вашем языке. Они могут практически
найти подходящих инструментов, таблиц. отображается, сначала нужно показано использование операторов ячейки столбца i = 1 в коде VBA. и для других а вторую клавишу
Запись макроса
выберите макрос, который они будут переопределять
-
макрос, который сначалаКопирование модуля макроса в хотите, чтобы макрос макрос не будет Эта страница переведена одновременно выполнить тысячи которые бы соответствовалиМакрос для объединения одинаковых зайти в настройки
-
On ErrorA Then ‘Особый случай Однако, здесь также расчетов.
-
пользователь устанавливает самостоятельно. вы хотите назначить. совпадающие с ними обновляет таблицу в другую книгу был всегда доступен применяться к ней. автоматически, поэтому ее инструментов за одну потребностям. При всем ячеек в таблице приложения. Для этогоина активном рабочем для первого элемента можно увидеть, как
Попытаемся немного изменить макрос. Например, мы, в
-
Назначение макроса кнопке стандартные сочетания клавиш Excel, а затемЕсли книга содержит макрос при работе вЕсли вам нужно записать текст может содержать
операцию (даже по
изобилии возможностей Excel Excel. откройте круглую кнопкуResume листе. В этом последовательности iStep = объявляются переменные, как Для этого, в качестве примера, установили
-
Вы можете назначить макрос в Excel, пока открывает Outlook для VBA, который нужно Excel, выберите пункт длинную последовательность задач, неточности и грамматические
одному клику мышкой). иногда нельзя автоматизироватьИсходный код макроса с изображением логотипадля обработки ошибок. макросе продемонстрировано использование 1 iFib = работают ссылки на макрос допишем выражение: клавишу М. значку и добавить открыта книга, содержащая ее отправки по использовать где-либо еще, Личная книга макросов. советуем вместо этого ошибки. Для нас
-
Таким образом расширяются решения некоторых задач, для одновременного поиска Microsoft и выберите В данном коде объектов Excel. В 0 Else ‘Сохраняем ячейки Excel, использованиеRange(«C3»).SelectДалее, нужно определить, где его на панель макрос. электронной почте. этот модуль можно Если выбрать этот использовать несколько более важно, чтобы эта возможности работы с ведь совершенству нет и объединения ячеек «Параметры Excel». Далее также показан пример частности, производится обращение размер следующего приращения цикла
-
ActiveCell.FormulaR1C1 = «11» будет храниться макрос. быстрого доступа илиВ полеМакросы и средства VBA
скопировать в другую вариант, Excel создаст мелких макросов. статья была вам программой. предела. Идеальное решение с одинаковыми значениями «Личная настройка», «Основные открытия и чтения процедурой перед тем, какForВыражение «ActiveCell.FormulaR1C1 = «=R[-3]C+R[-2]C+R[-1]C»» По умолчанию, он ленту.Описание
-
находятся на вкладке книгу с помощью скрытую личную книгуВ макросе могут содержаться полезна. Просим вас
Читайте также: Как работать – это предоставление в таблице. Работа параметры…», установите отметку данных из файла.Sub перезаписать ‘текущее значение, условного оператора заменим на «ActiveCell.FormulaR1C1 будет храниться вНазначение макроса для элементапри необходимости введите
-
Разработчик редактора Microsoft Visual макросов Personal.xlsb (если и задачи, не
-
уделить пару секунд с макросами в
-
возможности пользователю самому со свойством Merge. напротив пункта, отвечающего’Процедура Sub присваиваетк объекту последовательности iStep = If
= «= R[-4]C+R[-3]C+R[-2]C+R[-1]C»».
этой же книге управления на листе краткое описание действий, которая по умолчанию Basic. она еще не относящиеся к Excel. и сообщить, помогла Excel 2010 без
Работа с макросами, записанными в Excel
создавать свои специфическиеМакрос для объединения пустых за отображение нужной аргументам Val1 иColumns iFib iFib =и вывод наЗакрываем редактор, и запускаем (файле), но приВы можете назначать макросы макроса. скрыта, поэтому сначалаНазначение макроса объекту, фигуре
существует) и сохранит Процесс макроса может ли она вам, программирования кода инструменты. Для этого ячеек в строках вкладки. Val2 значения ячеек, и показано, как iFib_Next End If экран окна сообщения. макрос, как и
желании можно установить формам и элементамХотя это необязательная в
нужно включить ее.
или графическому элементу
макрос в ней. охватывать прочие приложения |
с помощью кнопокС помощью макросов пользователь были созданы макросы. |
таблицы Excel. |
Чтобы сделать новые A1 и B1 доступ к этому ‘Выводим текущее число’Процедура Sub выполняет в прошлый раз. хранение в новой |
ActiveX на листе. |
поле Описание, рекомендуетсяВыберитеНа листе щелкните правойВ поле |
Office и другие внизу страницы. Для |
может сам создатьКод макроса Excel написанныйИсходный код макроса макросы Excel, понадобится ‘из рабочей книги объекту осуществляется через Фибоначчи в столбце поиск ячейки, содержащей |
Как видим, вследствие книге, или в |
|
A активного рабочего |
заданную строку ‘в введенных нами изменений отдельной книге макросов.На вкладке введите понятное описание |
> рисунка, фигуры или |
при необходимости введите Visual Basic для ссылку на оригинал |
ему недостает в Basic for Application |
пустых ячеек воОткройте «Разработчик» > «Код» папке C:Documents and |
Worksheet |
листа ‘в строке диапазоне ячеек A1:A100 была добавлена ещё |
Мы оставим значениеРазработчик |
сведениями, которые могутПараметры элемент, к которому |
Работа с записанным кодом в редакторе Visual Basic (VBE)
краткое описание действий приложений (VBA). Например, (на английском языке). арсенале программы Excel. (VBA), а его всех строках таблицы > «Запись макроса». Settings Sub Set_Values(Val1. Показано так же, с индексом i активного листа Sub одна ячейка с по умолчанию.щелкните быть полезны для> нужно назначить существующий макроса. вы можете записать
Для автоматизации повторяющихся задач, Например, когда нужно выполняет инструмент приложения, Excel по горизонтали.Запишите название, из которого
Запись макроса
As Double, Val2 что при обращении
-
Cells(i, 1).Value = Find_String(sFindText As String) данными. Она такжеВ самом нижнем полеVisual Basic вас или другихЛента и панель макрос и выберитеХотя поле «Описание» является
-
макрос, который сначала вы можете записать автоматически выделить каждую к которому он Как автоматически объединить
-
будет ясно, что As Double) Dim к ячейке или iFib ‘Вычисляем следующее Dim i As была включена в настройки макросов можноили выберите пользователей, которые будут. команду необязательным, рекомендуется его обновляет таблицу в макрос с средство вторую строку одним присоединен. Большинство этих
все пустые ячейки? макрос делает. DataWorkbook As Workbook диапазону ячеек на число Фибоначчи и Integer ‘Целое число
-
расчет общей суммы. оставить любое подходящееСервис выполняться макрос. ПриВ категорииНазначить макрос заполнить. Кроме того,
-
Excel, а затем записи макросов в кликом. Или нужно инструментов не доступноМакрос для объединения всехВыберите подходящее сочетание клавиш On Error GoTo активном листе, имя увеличиваем индекс позиции типа Integer, используется
В случае, если макрос по контексту описание
-
> создании много макросы,Настроить ленту. желательно ввести понятное
-
открывает Outlook для Microsoft Excel. Представьте одновременно создать сразу на уровне окна пустых ячеек в для быстрого вызова ErrorHandling ‘Открываем рабочую
этого листа при элемента на 1 в цикле For слишком большой, его данного макроса. Но,Макрос описание помогут вамв спискеВ поле описание, которое будет ее отправки по имеют даты в определенное количество копий программы Excel. Как таблице Excel. макроса (оно не книгу с данными
-
записи ссылки указывать iFib_Next = iFib Dim iRowNumber As выполнение может занять это делать не
> быстро определять, какиеОсновные вкладкиНазначить макроса полезно вам и электронной почте. форматах случайных и определенного рабочего листа. написать макрос.Пример как автоматически должно дублировать ваши Set DataWorkbook = не обязательно. + iStep i Integer ‘Целое число значительное время. Но, обязательно.Редактор Visual Basic макрос по исполнителям,установите флажоквыберите макрос, который всем, кто запускаетЧтобы записать макрос, следуйте вы хотите применить Список потребностей пользователей
-
Теперь продемонстрируем на примере убрать пустые ячейки часто используемые горячие Workbooks.Open(«C:Documents and SettingsData»)’Процедура Sub при = i + типа Integer для путем внесения ручногоКогда все настройки выполнены,. в противном случаеРазработчик вы хотите назначить. макрос. Если у инструкциям ниже. ко всем адресам
-
в автоматизации процессов информацию о том, с помощью их клавиши Windows, например, ‘Присваиваем переменным Val1
помощи цикла считывает 1 Loop End хранения результата iRowNumber изменения в код, жмем на кнопкуПоиск справки по использованию может потребоваться угадать., а затем нажмитеНазначение макроса кнопке вас много макросов,На вкладке единый формат. Макрос работы можно продолжать как писать, редактировать объединения с использованием
-
CTRL+C/CTRL+V). и Val2 значения значения в столбце Sub
-
= 0 ‘Просматривает мы можем ускорить
-
«OK». редактора Visual BasicЧтобы начать запись макроса, кнопкуВы можете назначить макрос
Работа с макросами, записанными в Excel
описания помогут быстроРазработчик сделать это за до бесконечности. и выполнять код макроса. Автоматизированное форматированиеСписок «Сохранить в…» отвечает из заданной рабочей A рабочего листаЭта процедура
одну за другой процесс. Добавляем командуПосле этого, все вашиУзнайте, как найти справку нажмите кнопкуСохранить значку и добавить определить, для чегов группе вас. Запись макроса,Если бы не было макроса.
больших таблиц. за область применения книги Val1 =
Лист2, ‘выполняет с
Sub
ячейки A1:A100 до |
«Application.ScreenUpdating = False». действия в данной по элементам Visual |
ОК. |
его на панель они нужны.Код применив нужный формат возможности создавать макросыЧтобы написать макрос:Как разъединить объединенные ячейки |
макроса. Чтобы ваши Sheets(«Лист1»).Cells(1, 1) Val2 |
каждым значением арифметическиепросматривает ячейки столбца тех пор, пока Она позволит сохранить книге (файле) Excel Basic..Чтобы записать макрос, следуйте |
быстрого доступа илиЧтобы начать запись макроса, |
|
Выполните действия, которые нужно |
инструкциям ниже. ленту. нажмите кнопкуЗапись макроса макроса при необходимости. |
входящих в пакет в которой необходимо |
макрос. работать во всех DataWorkbook.Close Exit Sub |
результат в ‘столбец |
активного листа до строка sFindText For значит ускорить работу. макрос до тех позволяют значительно ускорить записать.На вкладкеНазначение макроса для элементаОК.Windows MacOS |
MS Office. То использовать макрос: «РАЗРАБОТЧИК»-«Код»-«Visual |
Как автоматически отменить открываемых на данном ErrorHandling: ‘Если файл |
support.office.com
Создание макросов в программе Microsoft Excel
A активного рабочего тех пор, пока i = 1 Это достигается путем пор, пока вы работу с документамиНа вкладкеРазработчик управления на листе.-ИЛИ-При записи макроса все
множество операций в Basic». Или нажмите
Способы записи макросов
объединение для всех компьютере документах, выбирайте
- не найден, пользователю
- листа (Лист1) Sub
не встретит пустую To 100 If отказа от обновления сами не остановите в этом табличномРазработчикнажмите кнопкуВы можете назначать макросыВыполните действия, которые нужноНажмите необходимые действия записываются процессе рутинной работы комбинацию горячих клавиш
выделенных ячеек по пункт «Личная книга». будет предложено поместить Transfer_ColA() Dim i ячейку. Значения записываются Cells(i, 1).Value = экрана во время запись.
Автоматическая запись макросов
редакторе. Это достигаетсящелкнитеЗапись макроса формам и элементам
записать.ALT в виде кода пользователям приходилось бы ALT+F11. строкам и столбцам
Заполните описание (перечислите все искомый файл ‘в As Integer Dim в массив. Этот sFindText Then ‘Если выполнения вычислительных действий.Для примера, запишем простейшее путем автоматизации повторяющихсяОстановить запись. ActiveX на листе.На вкладке+ Visual Basic для
выполнять вручную (выделятьПеред началом работы в сохранив и заполнив записываемые действия). нужную папку и Col As Range простой макрос Excel совпадение с заданной Чтобы возобновить обновление арифметическое действие: сложение действий, записанных в.
В полеВключение и отключение макросовРазработчикT приложений (VBA). Такими через одну строку редакторе следует сделать текст, которых содержитсяЧтобы начать запись, нажмите после этого продолжить Dim dVal As показывает работу с
строкой найдено ‘сохраняем после выполнения макроса, содержимого трёх ячеек специальный код. ДавайтеНа вкладкеИмя макроса в файлах Office
в группе+ действиями может быть
кликая по каждому простую настройку. Выберите в них? «ОК». В углу выполнение макроса MsgBox Double ‘Присваиваем переменной динамическими массивами, а номер текущей строки
в его конце (=C4+C5+C6). разберем, как создатьРазработчик
введите название макроса.Узнайте, как включать иКодM ввод текста или второму заголовку мышкой
Запуск макроса
инструмент в редактореКак объединить столбцы в экрана появится специальный «Файл Data.xlsx не Col столбец A также использование цикла и выходим из пишем команду «Application.ScreenUpdating
После этого, жмем на макросы в программещелкните Сделайте имя понятным, отключать макросы внажмите кнопку+
чисел, выбор ячеек или копировать вставлять Visual Basic: «Tools»-«Options». Excel используя макрос. значок. найден! » & рабочего листа ЛистDo Until цикла For iRowNumber = True» кнопку «Остановить запись». Excel, и как
Макросы чтобы можно было файлах Office.Остановить запись
Редактирование макроса
R или команд на по одному листу). И на вкладкеАвтоматическое горизонтальное объединениеПроделайте нужные действия с _ «Пожалуйста добавьте
2 Set Col. В данном примере = i ExitДобавим также команду «Application.Calculation
Эта кнопка преобразовалась их можно отредактировать., чтобы просмотреть макросы, быстро найти нужныйОткрытие редактора Visual Basic.. ленте или в Ручная работа в «Editor» активируйте опцию всех выделенных ячеек ячейками. рабочую книгу в = Sheets(«Лист2»).Columns(«A») i мы не будет
For End If = xlCalculationManual» вначале из кнопки «Запись
Скачать последнюю версию
связанные с книгой.
макрос.Нажмите клавиши-ИЛИ-
В поле меню, форматирование ячеек, лучшем случаи приводить «Require Variable Declaration». по столбцам таблицыНажмите «Остановить запись» во папку C:Documents and = 1 ‘При совершать какие-либо действия Next i ‘Сообщаем
кода, а в макроса», после включения Excel При этом откроетсяПримечание:ALT+F11НажмитеИмя макроса строк или столбцов к потере огромного Это позволит реализовать с помощью VBA вкладке «Разработчик» > Settings и нажмите помощи цикла считываем с массивом, хотя пользователю во всплывающем конце кода дописываем записи.Макрос можно записать двумя диалоговое окно
Первым символом имени макроса.ALTвведите название макроса. и даже импорт количества времени, а автоматическое заполнение инструкций макроса. Как одновременно «Код». OK» Resume End значения ячеек столбца в реальной практике окне найдена ли «Application.Calculation = xlCalculationAutomatic».Для того, чтобы проверить, способами:Макрос
Написание кода макроса с нуля
должна быть буква.Поиск справки по использованию+ Сделайте имя понятным, данных из внешнего в худшем – Options Explicit в объединить ячейки вОбратите внимание: макросы Excel Sub Col до тех программирования после того,
искомая строка ‘Если Этим мы вначале как работает записанный
автоматически;.
Последующие символы могут редактора Visual BasicT чтобы можно было источника, такого как ведет к ошибкам начале каждого ново нескольких выделенных диапазонах? могут запомнить относительныеУрок подготовлен для Вас пор, ‘пока не как данные записаны заданная строка найдена, макроса отключаем автоматический макрос, кликаем в
вручную.
lumpics.ru
Примеры макросов Excel
Примечание: быть буквами, цифрамиУзнайте, как найти справку+ быстро найти нужный
Макрос Excel: пример 1
Microsoft Access. Visual или даже потере созданного кода. АКак объединить ячейки в или абсолютные ссылки командой сайта office-guru.ru встретится пустая ячейка в массив, над указываем в какой пересчет результата после том же блокеВоспользовавшись первым вариантом, вы Макросы нельзя отменить. Прежде или знаками подчеркивания. по элементам VisualM
макрос. Basic для приложений ценных данных. в поле ввода Excel с помощью на ячейки. ЕслиИсточник: http://www.excelfunctions.net/Excel-Macro-Example.html Do Until IsEmpty(Col.Cells(i)) ними такие действия, ячейке найдено совпадение каждого изменения ячеек, инструментов «Код» по просто записываете определенные чем впервые запускать В имени макроса Basic.+Примечание: (VBA) является частьюВозможность создавать макросы и «Tab Width:» укажите кода макроса VBA. вы не выбралиПеревел: Антон Андронов ‘Выполняем арифметические операции как правило, совершаются. If iRowNumber = а в конце кнопке «Макросы», или действия в программе записанный макрос, сохраните не должно содержатьсяС помощью редактора VisualR Первым символом имени макроса языка программирования Visual автоматизировать рабочие процессы значение 2 вместоКак можно быстро соответствующую опцию, воАвтор: Антон Андронов над значением текущей’Процедура Sub сохраняет 0 Then MsgBox макроса – включаем. жмем сочетание клавиш Microsoft Excel, которые книгу или создайте пробелов; в качестве
Макрос Excel: пример 2
Basic (VBE) вы. должна быть буква. Basic. Он доступен бережет вашу работу 4-х. Это позволит объединять ячейки для время записи макросВ приложениях Excel, Word ячейки dVal = значения ячеек столбца «Строка » & Таким образом, Excel
Alt+F8. выполняете в данный ее копию, чтобы разделителей слов следует можете добавлять вНа вкладке Последующие символы могут в большинстве приложений от лишних потерь уменьшить ширину кода. таблиц со сложной запомнит, что действия и Power Point Col.Cells(i).Value * 3 A активного листа sFindText & « подсчитает результат толькоПосле этого, открывается окно момент времени. Потом, предотвратить внесение нежелательных использовать знаки подчеркивания. записанный код собственныеРазработчик быть буквами, цифрами Office. Хотя VBA времени и возникновения Данная настройка редактора структурой используя простые нужно применять именно вы можете создавать — 1 ‘Следующая в массиве Sub не найдена» Else один раз, а со списком записанных можно будет воспроизвести изменений. Если вас Если используется имя переменные, управляющие структурыщелкните или знаками подчеркивания. позволяет автоматизировать процессы ошибок. Далее рассмотрим, распространяется на все макросы? Пример готового к той ячейке, собственные команды, называемые команда записывает полученный GetCellValues() Dim iRow MsgBox «Строка « не будет его макросов. Ищем макрос, эту запись. Данный
Макрос Excel: пример 3
не устраивают результаты макроса, являющееся ссылкой и другие элементы,Макросы В имени макроса в приложениях Office как создать макрос, листы, но в VBA кода макроса которую вы выделили. макросами. Они автоматизируют результат в столбец As Integer ‘Хранит & sFindText & постоянно пересчитывать, чем который мы записали, способ очень легкий, выполнения макроса, вы на ячейку, может которые не поддерживает, чтобы просмотреть макросы, не должно содержаться и между ними, который безошибочно и
границах одной рабочей для объединения ячеек. Если вам придется выполнение рутинной работы, A активного рабочего номер текущей строки » найдена в сэкономит время. выделяем его, и и не требует можете закрыть книгу, появиться сообщение об средство записи макросов. связанные с книгой. пробелов; в качестве вам не нужно автоматически выполнить рутинную книги.Как запустить макрос в работать с разными когда вам приходится листа ‘Имя листа Dim dCellValues() As ячейке A» &Продвинутые пользователи могут выполнять жмем на кнопку знания кода, но не сохраняя ее. ошибке, указывающее на Так как средство Кроме того, можно разделителей слов следует уметь программировать или работу в одинВыберите инструмент: «Insert»-«Module» чтобы Excel разными способами. ячейками, выбирайте опцию постоянно применять к в ссылке указывать
Макрос Excel: пример 4
Double ‘Массив для iRowNumber End If не только редактирование «Выполнить». применение его наНиже приведены дополнительные сведения недопустимое имя макроса.. записи макросов фиксирует нажать клавиши использовать знаки подчеркивания. знать язык VBA, клик мышкой. Так создать новый стандартныйКак выполнить макрос про относительную ссылку. тексту или ячейкам нет необходимости, так хранения значений ячеек End Sub и оптимизацию записанныхМожно поступить ещё проще, практике довольно ограничено. о работе сВ списке почти каждый шаг,ALT+F8 Если используется имя так как все же рассмотрим в модуль для макросов. с помощью кнопки,Работа с меню программы одинаковой оформление, вводить как это активный
iRow = 1Следующая процедура макросов, но и и не вызыватьРучная запись макросов, наоборот, макросами в Excel.Сохранить в выполняемый во время. При этом откроется макроса, являющееся ссылкой нужные действия выполнит каких местах рабочей В появившемся окне панели быстрого запуска (переключение вкладок) и похожие наборы формул лист. Cells(i, 1) ReDim dCellValues(1 ToSub записывать код макросов даже окно выбора требует знаний программирования,Задачавыберите книгу, в записи, может также диалоговое окно на ячейку, может средство записи макросов. книги Excel можно модуля под текстом и стандартными средствами переход к другим и т.д. Фактически, = dVal i 10) ‘Цикл Do– пример использования с нуля. Для макросов. Мы же так как кодОписание которой вы хотите потребоваться удалить ненужныйМакрос
Макрос Excel: пример 5
появиться сообщение обВажно знать, что при создавать и хранить Option Explicit введите на панели инструментов окнам в рекордере макросы – это = i + Until перебирает последовательно цикла того, чтобы приступить помним, что записали набирается вручную сВключение и отключение макросов
сохранить макрос. код. Просмотр записанного. ошибке, указывающее на записи макроса регистрируются макросы. Как их следующий код макроса: РАЗРАБОТЧИК? не записывается. маленькие программы, так 1 Loop End ячейки столбца ADo While к этому, нужно сочетание «горячих клавиш» клавиатуры. Но, грамотноУзнайте, как включать иКак правило, макросы сохраняются
Макрос Excel: пример 6
кода — отличныйВнимание: недопустимое имя макроса.. почти все ваши запустить и выполнить,Sub MyMakros()Личная книга макросов вПараметры безопасности как их запись Sub
активного листа ‘и. Здесь также можно нажать на кнопку для быстрого вызова написанный таким образом отключать макросы в в способ научиться программировать Макросы нельзя отменить. ПреждеЧтобы назначить сочетание клавиш действия. Поэтому если а также какDim polzovatel As Excel и какНесмотря на уверения, что производится в скриптахДанный макрос показывает пример извлекает их значения увидеть, как объявляются «Visual Basic», которая макроса. В нашем код, может значительно Excel для Mac.той же книге на VBA или чем впервые запускать для запуска макроса, вы допустите ошибку, их максимально оптимизировать String ее использовать. приложение может самостоятельно Visual Basic. Однако кода VBA, отслеживающего в массив до переменные, работу со расположена в самом случае, это Ctrl+М.
ускорить выполнение процессов.Создание, выполнение, изменение или
, но если вам
отточить свои навыки.
записанный макрос, сохраните
office-guru.ru
Макросы Excel – экономия вашего времени
в поле например нажмете не под свои потребности.Dim data_segodnya AsРабота с личной контролировать макросы на даже далекий от событие Excel. Событие, тех пор, пока ссылками на ячейки начале ленты разработчика. Набираем данную комбинациюПрежде, чем начать автоматическую удаление макроса нужно, чтобы данныйПример изменения записанного кода книгу или создайтеСочетание клавиш ту кнопку, средствоExcel предоставляет большой и Date
книгой макросов и наличие вредоносного кода, программирования пользователь может к которому привязан не встретится пустая Excel и применение
После этого, открывается знакомое
на клавиатуре, после запись макросов, нужноЧтобы сэкономить время на макрос был всегда можно найти в ее копию, чтобывведите любую строчную записи макросов зарегистрирует изобильный арсенал инструментовpolzovatel = Application.UserName краткий обзор ее не рекомендуется брать
легко создавать и макрос, происходит каждый ячейка Do Until условного оператора нам окно редактора чего макрос запускается. включить макросы в выполнении часто повторяющихся доступен при работе статье Начало работы предотвратить внесение нежелательных или прописную букву. это действие. В для хранения иdata_segodnya = Now преимуществ. Где находиться их из непроверенных редактировать их. раз при выделении IsEmpty(Cells(iRow, 1)) ‘Проверяем,
If VBE.Как видим, макрос выполнил
- программе Microsoft Excel. задач, можно записать
- в Excel, выберите с VBA в изменений. Если вас
- Рекомендуется использовать сочетания таком случае можно обработки огромного количестваMsgBox «Макрос запустил личная книга макросов источников. Например, скачиватьНаиболее часто используются Excel-макросы.
- ячейки или диапазона что массив dCellValues.Программист пишет там код в точности всеДалее, переходим во вкладку соответствующую последовательность действий вариант Личная книга
- Excel. не устраивают результаты
- клавиш с снова записать всю информации с данными. пользователь: » &
- и как записывать готовые из интернета.
- С их помощью ячеек на рабочем имеет достаточный размер
’Процедура Sub выводит макроса вручную. те действия, которые «Разработчик». Кликаем по в виде макроса. макросов. Если выПеред записью макросов полезно выполнения макроса, выCTRL последовательность или изменить Хотя для самой polzovatel & vbNewLine в нее свои Можно доверять мнению можно создавать даже
листе. В нашем ‘Если нет – числа Фибоначчи, неКак видим, макросы в были записаны ранее.
кнопке «Запись макроса»,
Узнайте, как создавать выберете этот параметр, знать следующее: можете закрыть книгу,+ код VBA. Поэтому универсальной аналитической программы & data_segodnya макросы? антивирусов, а макросы, документы-калькуляторы, например, для случае при выделении увеличиваем размер массива превышающие 1000 Sub
Microsoft Excel могутДля того, чтобы отредактировать которая расположена на и выполнять макросы. Excel создаст скрытуюМакрос, записанный для работы не сохраняя ее.SHIFT перед записью процесса Excel – хранениеEnd SubКак создать и добавить используемые на нескольких
подсчета ежемесячного бюджета
fb.ru
Возможности макросов в Excel исходные коды и описание
ячейки на 10 при Fibonacci() Dim i значительно ускорить выполнение макрос, снова жмем ленте в блоке
Примеры возможностей макросов с описанием кодов
Копирование модуля макроса в личную книгу макросов с диапазоном Excel,
Ниже приведены дополнительные сведения, так как они следует хорошо проработать данных само поНажмите на кнопку в надстройку в Excel компьютерах в офисе, компании.B1
помощи ReDim If As Integer ‘Счётчик рутинных и однообразных на кнопку «Макросы». инструментов «Код». другую книгу Personal.xlsb (если она будет выполняться только о работе с будут заменять собой
его. Чем точнее себе менее интересно, редакторе «Run Macro» с кодом VBA. рекомендуется снабдить цифровойЗапись макроса, на экран выводится UBound(dCellValues) < iRow для обозначения позиции
процессов. Но, в В открывшемся окнеОткрывается окно настройки записиЕсли книга содержит макрос еще не существует) для ячеек этого макросами в Excel. совпадающие с ними вы запишете последовательность,
чем возможность их или клавишу F5Практическое пошаговое руководство подписью.Создать макрос можно двумя окно с сообщением. Then ReDim Preserve элемента в последовательности большинстве случаев, для выбираем нужный макрос,
макроса. Тут можно VBA, который нужно и сохранит макрос диапазона. Поэтому еслиЗадача стандартные сочетания клавиш тем более эффективно обрабатывать, структурировать и на клавиатуре. В
по созданию надстроекПо умолчанию использование макросов способами. Первый –’Данный код показывает dCellValues(1 To iRow Dim iFib As этого больше подходят и кликаем по указать любое имя
использовать где-либо еще, в нее. Книги вы добавите вОписание в Excel, пока будет работать макрос. анализировать с презентацией появившемся окне «Macros» с VBA кодом в документах обычно написать скрипт VB
окно с сообщением, + 9) End Integer ‘Хранит текущее макросы, код которых кнопке «Изменить». макроса, если установленное этот модуль можно из этой папки диапазон новую строку,
Изменение параметров безопасности макросов открыта книга, содержащаяМакросы и средства VBA в отчетах. Для нажмите на кнопку программ макросов. Управление, отключено. Включить макросы с нуля. Так
exceltable.com
Как написать макрос в Excel на языке программирования VBA
если на текущем If ‘Сохраняем значение значение последовательности Dim написан вручную, аОткрывается Microsoft Visual Basic по умолчанию вас скопировать в другую автоматически открываются при макрос не будет в Excel макрос. Например, если находятся на вкладке этих целей служит «Run», чтобы посмотреть редактирование и удаление Excel можно, если
Написание макросов в Excel
поступают программисты. Второй рабочем листе ‘выбрана текущей ячейки в iFib_Next As Integer не автоматически записанные (VBE) – среда, не устраивает. Главное, книгу с помощью каждом запуске Excel, применяться к ней.Сведения о параметрах безопасности
назначить сочетание клавишРазработчик сильнейший аналитических инструмент результат работы макроса. надстроек из программы.
зайти во вкладку
- способ проще: нужно ячейка B1 Private массиве dCellValues dCellValues(iRow) ‘Хранит следующее значение действия. Кроме того, где происходит редактирование
- чтобы имя это редактора Microsoft Visual а макросы, сохраненныеЕсли вам нужно записать макросов и ихCTRL+Z, которая по умолчанию по обработке данныхПримечание. Если в главномКак написать макрос в «Разработчик» и далее включить запись всех Sub Worksheet_SelectionChange(ByVal Target = Cells(iRow, 1).Value последовательности Dim iStep код макроса можно макросов. начиналось с буквы, Basic. в таких книгах, длинную последовательность задач, значении.(Отменить), вы не
- скрыта, поэтому сначала такой как «Сводные меню отсутствует закладка Excel на языке «Код» > «Безопасность действий в специальном As Range) ‘Проверяем
iRow = iRow
As Integer 'Хранит оптимизировать через редактор
Запись каждого макроса начинается а не с
Назначение макроса объекту, фигуре
указываются в окне
советуем вместо этогоЗапуск макроса сможете использовать его нужно включить ее.
таблицы». Но и - «РАЗРАБОТЧИК», тогда ее программирования VBA. макросов» > «Параметры рекордере и просто выбрана ли ячейка + 1 Loop размер следующего приращения VBE для ускорения
с команды Sub, цифры. Также, в или графическому элементу «Макрос» (см. следующий использовать несколько болееМакросы можно запускать различными для функции «Отменить» Дополнительные сведения см. его можно еще необходимо активировать в
Как создать макрос
Возможности макросов в Excel
макросов» > «Включить еще раз выполнить B1 If Target.Count End Sub ‘Инициализируем переменные i процесса выполнения задачи. а заканчивается командой названии не должноНа листе щелкните правой раздел). мелких макросов.
способами, например с в данном экземпляре в статье Отображение более усовершенствовать с
настройках: «ФАЙЛ»-«Параметры»-«Настроить ленту». с помощью редактора все» > «ОК». те процедуры, которые = 1 AndВ этом примере процедура и iFib_Next iАвтор: Максим Тютюшев End Sub. Сразу быть пробелов. Мы кнопкой мыши объект,Чтобы назначить сочетание клавишВ макросе могут содержаться помощью сочетания клавиш, Excel. вкладки «Разработчик».
помощью макросов. И В правом списке кода языка программирования Изменения вступят в вы хотите автоматизировать. Target.Row = 1Sub = 1 iFib_NextСледующие простые примеры макросов же после команды оставили название по рисунка, фигуры или для запуска макроса, и задачи, не графического объекта, панелиВ спискеПеред записью макросов полезно тогда возможности сводных «Основные вкладки:» активируйте Visual Basic for силу во времяРазберем, как записывать макросы
And Target.Column =считывает значения из = 0 ‘Цикл Excel иллюстрируют некоторые Sub указывается имя умолчанию – «Макрос1». элемент, к которому в поле относящиеся к Excel. быстрого доступа, кнопкиСохранить в знать следующее: таблиц не знают галочкой опцию «Разработчик» Application? Краткий обзор следующего открытия файла. в Excel 2007 2 Then ‘Если столбца Do While будет
возможности и приёмы, макроса. Оператор «Range(«…»).Select»Тут же, при желании, нужно назначить существующийСочетание клавиш Процесс макроса может или даже привыберите книгу, вМакрос, записанный для работы границ. и нажмите на основных возможностей макросов.Автор: varvara-ai при помощи макрорекордера ячейка B1 выбрана,A выполняться до тех описанные в самоучителе указывает выбор ячейки. можно установить сочетание макрос и выберитевведите любую строчную охватывать прочие приложения открытии книги. которой вы хотите
exceltable.com
с диапазоном Excel,
Экономисты в повседневной работе сталкиваются с рутинной работой: с определенной периодичностью им приходится выполнять одну и ту же последовательность действий для получения определенного отчета, например. Частично автоматизировать такую работу можно с помощью макросов. Причем для написания несложных команд достаточно знать только азы программирования.
Как записать самый простой макрос?
Для начала запишем самый легкий макрос — зададим в ячейке А1 формат вида 12 345:
- Открываем новую книгу, в ячейке А1 набираем шестизначное число 123456. Сейчас оно выдается без разделителей разрядов. Запишем макрос, который ставит эти разделители.
- Заходим на панели инструментов в закладку Вид*, находим кнопку Макросы, жмем Запись макроса. В появившемся окне задаем имя макроса и книгу, в которой хотим этот макрос сохранить.
Важно
Запустить макросы можно только из открытых книг, поэтому если вы планируете использовать записанные вами макросы довольно часто, стоит использовать специальную книгу макросов, которая автоматически открывается вместе с запуском сеанса Excel.
Если вы все-таки хотите хранить макросы в отдельном файле, эту книгу нужно сохранить, выбрав тип файла Книга Excel с поддержкой макросов. В противном случае после закрытия книги макросы будут стерты.
- Выбираем Сохранить в… — Личная книга макросов и нажимаем Ок (рис. 1).
Рис. 1. Запись макроса в личную книгу макросов
- Записываем в макрос действия, которые хотим выполнить: вызываем контекстное меню Формат ячеек (можно воспользоваться комбинацией клавиш Сtrl+1) и задаем нужный нам формат числа: на закладке Число идем в блок (все форматы) и выбираем там формат вида # ##0.
К сведению
Этот формат можно задать и в блоке Числовой, но чуть позже вам станет ясно, почему мы воспользовались блоком Все форматы.
- На закладке Вид — Макросы выбираем пункт Остановить запись.
Второй, более быстрый способ остановить запись макроса — нажать на появившийся в левом нижнем углу синий квадратик (рис. 2.).
Мы рекомендуем
Всегда обращайте внимание на этот квадратик: если он появился на панели, значит, сейчас идет запись всех ваших действий в макрос. Не забывайте вовремя останавливать запись макроса, чтобы потом его не пришлось переделывать.
Проверяем, что макрос записан и работоспособен:
- в ячейку А2 вбиваем любое шестизначное число;
- запускаем макрос одним из двух способов: на закладке Вид — Макросы выбираем пункт Макросы или нажимаем комбинацию клавиш Alt+F8, находим в списке наш макрос и нажимаем кнопку Выполнить.
Рис. 2. Форматирование числа и остановка записи макроса
Итак, вы записали свой первый макрос! Примите поздравления. Теперь давайте познакомимся с личной книгой макросов и синтаксисом написания команд для макроса.
Личная книга макросов
По умолчанию Excel не отображает личную книгу макросов. Чтобы убедиться, что она открыта, выбираем на вкладке Вид кнопку Отобразить — в появившемся окне должна быть книга под именем PERSONAL.
Мы убедились, что книга открыта, но отображать ее не будем, чтобы потом по ошибке не закрыть ее. По сути, в этой книге нас интересует так называемый Исходный текст — блок, в котором записываются макросы. Чтобы увидеть это окно, нажмите клавиши Alt+F11 или кликните правой кнопкой мыши на ярлыке любого листа Excel и выберите в контекстном меню Исходный текст. Откроется окно VBA-кодирования в Excel (рис. 3). Оно состоит из двух блоков:
1. В левой части экрана окно Project – VBAProject — это проводник, в котором отображаются все открытые в данный момент книги Excel (даже если вы их не видите, как, например, книгу Personal). Работа с этим блоком аналогична работе в обычном проводнике — двойной клик по наименованию книги раскрывает ее содержимое. Нас интересует блок Modules — Module1. Кликаем левой кнопкой мыши дважды по этому объекту.
2. В правой части экрана откроется блок записи и редактирования макросов. Здесь уже автоматически записался Макрос1. Рассмотрим на его примере основную канву макроса.
Рис. 3. Окно VBA-кодирования в Excel
Синтаксис макроса
Макросы — это команды, написанные на языке VBA (Visual Basic for Applications). И синтаксис кода макроса не отличается от записи кода в Visual Basic.
Любой макрос имеет следующий вид:
Sub Имя_Макроса_Без_Пробелов()
‘ комментарии к макросу — они нужны для вас, VBA не воспринимает такие строки как команды
команды, написанные на языке VBA
End Sub
3 обязательных блока макроса:
1. Начало макроса. Всегда начинается с команды Sub. Далее идет имя макроса — оно может быть на русском языке, но не должно содержать пробелы и специальные символы.
В конце имени макроса всегда ставятся скобки () — они нужны, когда вы создаете свою функцию, в них указываются аргументы функции, но об этом сейчас речь не пойдет.
2. Блок команд. В нашем примере он состоит из одной строки: Selection.NumberFormat = «#,##0»
Каждая команда должна начинаться с новой строки. Если текст команды очень длинный и не помещается на экране, его можно разбить на несколько строк, заканчивая строку символом нижнего подчеркивания _ (далее в примере мы это увидим).
3. Конец макроса. Всегда обозначается как End Sub.
Есть и один необязательный блок — это комментарии, которые вы можете оставлять в любом месте внутри кода макроса, поставив перед началом комментариев знак апострофа ‘. Например, вы можете описать, что именно делает тот или иной макрос.
Обратите внимание!
Если вы хотите разместить комментарии в несколько строк, каждую новую строку надо начинать с апострофа.
Теперь запишем более сложный макрос и научимся понимать текст его кода.
Например, информационная система выдает отчет «Бюджет на месяц» без выделения групповых значений цветом или шрифтом.
Нам необходимо:
- выделить групповые строки полужирным шрифтом;
- отформатировать на печать — расположить отчет по центру листа, задать масштаб 75 %, вывести в колонтитулы название отчета (рис. 4).
Рис. 4. Изменения после написания макроса
Запишем алгоритм форматирования отчета в макрос.
Нажимаем кнопку записи макроса и выполняем следующие действия:
- Даем макросу имя Форматирование_БДР, в блоке описания записываем, что будет делать этот макрос (например, Выделяет жирным курсивом итоги, форматирует на печать). Жмем Ок.
- Выделяем столбцы А:С, ставим автофильтр — на закладке Данные находим кнопку Фильтр.
- По столбцу КОД задаем условие не содержит точку: Текстовые фильтры — Не содержит и в поле текста ставим символ точки без пробелов (рис. 5).
Рис. 5. Использование автофильтра по столбцу «КОД»
- Выделяем отфильтрованный диапазон и задаем ему полужирный шрифт.
- Снимаем автофильтр (повторное нажатие на закладке Данные кнопки Фильтр).
- Заходим в меню форматирования на печать (Кнопка Файл/Office — Печать — Предварительный просмотр — Параметры страницы) и задаем там три параметра:
1) на вкладке Страница задаем масштаб 75 %;
2) на вкладке Поля отмечаем пункт Горизонтально в блоке Центрировать на странице;
3) на вкладке Колонтитулы создаем верхний колонтитул с текстом Бюджет на январь.
- Выходим из параметров страницы.
- Заканчиваем запись макроса.
- Нажимаем Alt+F11 и смотрим, что получилось (см. рис. 4).
Код этого макроса уже гораздо длиннее и непонятнее, но легко читаем для знающих английский язык и азы программирования в VBA.
Правила написания команд в VBA
Любая команда макроса состоит из двух блоков, разделенных точкой:
Объект.Действие с объектом или свойство объекта
Объектами в Excel являются, например:
- книга: WorkBook, ActiveWorkbook;
- лист, листы: WorkSheet, ActiveSheet, Sheets;
- ячейка: Cells(1,1) — в скобках указываются номера строки (Row) и столбца (Column) ячейки на листе;
- диапазон ячеек (может быть и одна ячейка): Range(«А1:С5»), Range(«А1»);
- строки (Rows);
- столбцы (Columns);
- выделение (Selection) — выделенный в данный момент диапазон (это может быть как несколько смежных ячеек, так и смежные строки или столбцы).
Примеры действий с объектами:
- ActiveWorkbook.Save — сохранить рабочую книгу (та, которая была активна в момент вызова пользователем макроса);
- Sheets(«Лист3»).Name = «Отчет» — переименовать «Лист3» в «Отчет»;
- Sheets(«Отчет»).Activate — перейти на лист с названием «Отчет»;
- Range(«А1»).Copy — скопировать в буфер обмена данные из ячейки А1;
- Rows(«13:13»).Delete Shift:=xlUp — удалить строку 13 со сдвигом вверх.
Примеры свойств объектов:
- ActiveCell.FormulaR1C1 = «БДР» — в выделенной (активной) ячейке записан текст «БДР»;
- ActiveCell.Row < 65 — номер ряда активной ячейки меньше 65.
Помнить все названия объектов, команд и свойств для написания несложных макросов не обязательно. Вы всегда можете сначала записать ваши стандартные действия с отчетами в Excel, а потом отформатировать код макроса, убрав из него лишние действия или заменив некоторые заданные параметры (например, длину диапазона) на переменные (которые в дальнейшем макрос будет запрашивать у пользователя или рассчитывать самостоятельно).
Но об этом мы расскажем далее, а сейчас обратимся к коду нашего первого макроса, состоящего из одной строки:
Selection.NumberFormat = «#,##0»
Суть его в следующем: к объекту Выделенный диапазон (у нас одна ячейка, но это может быть и весь столбец/строка или диапазон смежных ячеек) применяется свойство Числовой формат вида # ##0 (если помните, именно этот формат мы выбрали в списке).
Код макроса Форматирование_БДР и расшифровка строк кода представлены в таблице.
Строка кода |
Расшифровка |
Sub Форматирование_БДР() |
Начало макроса, имя макроса |
‘ |
Пустая строка комментариев (ставится автоматически при записи макроса) |
‘ Форматирование_БДР Макрос |
Автоматически добавленный комментарий при записи макроса — может быть удален без потери работоспособности макроса |
‘ Выделяем жирным курсивом итоги, форматируем на печать |
Автоматически добавленный комментарий при записи макроса из поля Описание |
Пустая строка — не влияет на суть исполнения макроса, но их полезно добавлять для разделения блоков команд внутри кода |
|
Columns(«A:C»).Select |
Выделить (Select) объект Столбцы (Columns) А:С |
Selection.AutoFilter |
Применить автофильтр (AutoFilter) для выделенного диапазона (Selection) |
ActiveSheet.Range(«$A$1:$C$34″).AutoFilter Field:=1, Criteria1:=»<>*.*», _ |
Задать критерий отбора «не содержит точку» |
Operator:=xlAnd |
Продолжение команды из предыдущей строки. Обратите внимание: предыдущая строка закончилась символом нижнего подчеркивания _, значит, текст команды не уместился на одну строку и окончание команды перенесено на следующую |
Range(«A1:C34»).Select |
Выделить (Select) объект Диапазон (Range) А1:С34. Обратите внимание: какой бы длины ни был ваш следующий отчет, для которого вы будете применять этот макрос, выделится всегда только диапазон до 34 строки! Как сделать этот диапазон любой длины — обсудим немного позже |
Selection.Font.Bold = True |
Для выделенного диапазона (Объект Selection) установить свойство «полужирный шрифт» (Font.Bold = True). Если нужно отменить какое-то свойство, пишем False |
Selection.AutoFilter |
Снять автофильтр (при записи макроса это было повторное нажатие кнопки Фильтр на закладке Данные) |
With ActiveSheet.PageSetup |
Начало процедуры With (используется, если далее перечисляются свойства или действия с одним и тем же объектом для компактности записи кода). Для объекта ActiveSheet (Текущий лист) применить следующие параметры свойства PageSetup (Параметры печати): |
.PrintTitleRows = «» |
Печатать на каждой странице сквозные строки — пусто (то есть данное свойство не задано пользователем) |
.PrintTitleColumns = «» |
Печатать на каждой странице сквозные столбцы — пусто |
End With |
Окончание процедуры With |
ActiveSheet.PageSetup.PrintArea = «» |
Заданная область печати — пусто (то есть пользователь не ограничил область печати, следовательно, на экран будет выведено все, что есть на листе) |
With ActiveSheet.PageSetup |
Начало процедуры With Для объекта Текущий лист применить следующие параметры печати (цветом выделены те, которые мы изменили по сравнению со стандартными): |
.LeftHeader = «» |
Левый верхний колонтитул — пусто |
.CenterHeader = «Бюджет на январь» |
Центральный верхний колонтитул — задан текст пользователем |
.RightHeader = «» |
Правый верхний колонтитул — пусто |
.LeftFooter = «» |
Левый нижний колонтитул — пусто |
.CenterFooter = «» |
Центральный нижний колонтитул — пусто |
.RightFooter = «» |
Правый нижний колонтитул — пусто |
.LeftMargin = Application.InchesToPoints(0.708661417322835) |
Размеры левого поля |
.RightMargin = Application.InchesToPoints(0.708661417322835) |
Размеры правого поля |
.TopMargin = Application.InchesToPoints(0.748031496062992) |
Размеры верхнего поля |
.BottomMargin = Application.InchesToPoints(0.748031496062992) |
Размеры нижнего поля |
.HeaderMargin = Application.InchesToPoints(0.31496062992126) |
Размеры верхнего колонтитула |
.FooterMargin = Application.InchesToPoints(0.31496062992126) |
Размеры нижнего колонтитула |
.PrintHeadings = False |
Не печатать заголовки строк и столбцов (False — пользователь не отметил этот пункт) |
.PrintGridlines = False |
Не печатать сетку |
.PrintComments = xlPrintNoComments |
Не печатать примечания |
.PrintQuality = 600 |
Качество печати — 600 точек на дюйм |
.CenterHorizontally = True |
Центрировать на странице горизонтально (True — пользователь отметил этот пункт) |
.CenterVertically = False |
Не центрировать по вертикали |
.Orientation = xlPortrait |
Ориентация страницы — книжная |
.Draft = False |
Пользователь не отметил пункт Черновая в блоке Печать |
.PaperSize = xlPaperA4 |
Размер бумаги А4 |
.FirstPageNumber = xlAutomatic |
Номер первой страницы — автоматически |
.Order = xlDownThenOver |
Последовательность вывода страниц: вниз, потом вправо (пункт в блоке Печать) |
.BlackAndWhite = False |
Пользователь не отметил пункт Черно-белая в блоке Печать |
.Zoom = 75 |
Масштаб 75 % |
.PrintErrors = xlPrintErrorsDisplayed |
Пункт в блоке Печать – Ошибки ячеек — Как на экране |
.OddAndEvenPagesHeaderFooter = False |
Пользователь не задавал разные колонтитулы для четных и нечетных страниц (флажок в блоке Колонтитулы) |
.DifferentFirstPageHeaderFooter = False |
Пользователь не задавал отдельный колонтитул для первой страницы (флажок в блоке Колонтитулы) |
.ScaleWithDocHeaderFooter = True |
Флажок в блоке Колонтитулы – Изменять вместе с масштабом страницы отмечен пользователем |
.AlignMarginsHeaderFooter = True |
Флажок в блоке Колонтитулы – Выровнять относительно полей страницы отмечен пользователем |
.EvenPage.LeftHeader.Text = «» |
Текст колонтитулов для четных и первой страниц не задан |
.EvenPage.CenterHeader.Text = «» |
|
.EvenPage.RightHeader.Text = «» |
|
.EvenPage.LeftFooter.Text = «» |
|
.EvenPage.CenterFooter.Text = «» |
|
.EvenPage.RightFooter.Text = «» |
|
.FirstPage.LeftHeader.Text = «» |
|
.FirstPage.CenterHeader.Text = «» |
|
.FirstPage.RightHeader.Text = «» |
|
.FirstPage.LeftFooter.Text = «» |
|
.FirstPage.CenterFooter.Text = «» |
|
.FirstPage.RightFooter.Text = «» |
|
End With |
Окончание процедуры With |
End Sub |
Окончание кода макроса |
Редактирование макроса
Как видите, код макроса легко читаем и понятен. Кроме того, нам не надо нагромождать его лишними строками: так как в параметрах печати мы меняли только три пункта, остальные строки можем удалить (они будут установлены по умолчанию). Удалим ненужные строки, поставим комментарии и в итоге получим вот такой элегантный код:
Sub Форматирование_БДР()
‘ Макрос выделяет жирным курсивом итоги, форматирует отчет на печать
‘——————
‘ Выделяем столбцы и ставим фильтр по столбцу КОД
Columns(«A:C»).Select
Selection.AutoFilter
ActiveSheet.Range(«$A$1:$C$34″).AutoFilter Field:=1, Criteria1:=»<>*.*», _
Operator:=xlAnd
‘ Выделяем отфильтрованный диапазон полужирным шрифтом, снимаем фильтр
Range(«A1:C34»).Select
Selection.Font.Bold = True
Selection.AutoFilter
‘ Форматируем на печать: верхний колонтитул, центрирование по горизонтали, масштаб 75 %
With ActiveSheet.PageSetup
.CenterHeader = «Бюджет на январь»
.CenterHorizontally = True
.Zoom = 75
End With
End Sub
Ввод в код макроса функций и процедур
Теперь усложним код макроса, задав ему два параметра:
1. Название месяца отчета запрашиваем у пользователя.
2. Последняя строка отчета БДР (в случае если она плавающая) рассчитывается в коде макроса.
Функция InputBox
Чтобы запросить у пользователя месяц отчета, воспользуемся функцией Inputbox, которая выводит диалоговое окно, в котором пользователь может самостоятельно задать значение переменной, используемой в коде. Синтаксис функции InputBox:
Zapros = InputBox(«Текст запроса», <«Текст в шапке окна»>, <Значение по умолчанию>,…)
где Zapros — введенная вами переменная (имя придумываете вы сами), а в скобках через запятую перечисляются аргументы функции.
Обратите внимание: первый аргумент является обязательным, то есть любое диалоговое окно должно сопровождаться пояснительным текстом, чего вы ждете от пользователя. Следующие аргументы обязательными не являются и их можно не указывать. То есть если вы хотите задать значение по умолчанию, но не хотите писать текст в шапке диалогового окна, разделите первый и третий аргументы двумя запятыми, как это будет сделано в нашем примере (см. далее).
Для удобства присвойте полученное значение функции InputBox какой-нибудь введенной вами переменной, особенно если в коде макроса вы будете несколько раз использовать значение этой функции.
Важно
Имена вводимых переменных не должны совпадать с уже занятыми VBA словами под название объектов, свойств или функций!
В нашем примере присвоим результат вызова функции InputBox переменной Mes.
Например, нельзя завести свою переменную Range, Cells или Month — компилятор VBA предупредит вас, что делать этого нельзя, и не запустит макрос, пока вы не устраните ошибку (рис. 6).
Рис. 6. Пример ошибки при заведении переменной
Не забывайте любой текст в коде брать в кавычки! В противном случае компилятор VBA будет воспринимать этот текст как команды и выдавать ошибку, так как не сможет их обработать.
Итак, приступим к редактированию кода макроса. Добавим в самое начало кода макроса строки:
‘ Запрашиваем у пользователя месяц отчета
Mes = InputBox(«Введите название месяца отчета», , «Январь»)
Теперь при запуске макроса будет выводиться диалоговое окно, в котором пользователь самостоятельно сможет указать, за какой месяц этот отчет (рис. 7).
Рис. 7. Диалоговое окно для указания месяца
С помощью функции InputBox можно запросить у пользователя и длину отчета. Но мы научим Excel высчитывать ее самостоятельно. Для этого нам потребуется процедура While.
Процедура While
Используется в коде, если надо сделать одинаковые действия несколько раз подряд до тех пор, пока выполняется какое-либо условие. Синтаксис процедуры While:
Do While <условие, которое должно быть верным для выполнения процедуры>
<список команд>
Loop
Условие может состоять из одного выражения или содержать несколько, перечисленных через оператор AND (то есть оба условия должны быть выполнены) или OR (достаточно выполнения только одного из перечисленных условий). Также условие обязательно должно содержать переменную-счетчик (это может быть номер строки или столбца ячейки, значения которой вы проверяете).
В список команд обязательно должна входить команда наращивания переменной-счетчика, иначе процедура зациклится (так как она постоянно будет сравнивать одно и то же значение) и макрос придется прерывать принудительно.
Если макрос ушел в цикл, прервите его с помощью комбинации клавиш Ctrl+Break и либо прекратите макрос (кнопка End), либо зайдите в код макроса и исправьте ошибку (кнопка Debug). Чтобы макрос не уходил в цикл, рекомендуется включить в блок условий «защиту от дурака». Например, добавляем в условие проверку, чтобы значение счетчика не превышало определенной, заведомо достаточной для нас величины.
Рассмотрим применение процедуры While для поиска конца отчета БДР.
Как видно на рис. 4, последняя строка отчета имеет код «500». Напишем процедуру, которая будет проверять значения в ячейках столбца «А» и остановит свои действия, когда найдет ячейку с кодом «500».
Обратите внимание!
Excel иногда воспринимает числа как текст, поэтому включим два условия проверки значения ячейки и добавим «защиту от дурака» на случай, если в форме отчета случайно затрется код последней строки.
Помним, что все текстовые значения надо брать в кавычки. Числа записываем без кавычек:
‘ Ищем последнюю строку отчета
Dim Row_End As Integer ‘ Вводим переменную «счетчик номера строки»
Row_End = 1 ‘ Присваиваем ей номер 1
‘ Начинаем процедуру поиска последней строки отчета по коду «500»
Do While Cells(Row_End, 1).Value <> «500» And Cells(Row_End, 1).Value <> 500 And Row_End < 100
‘ До тех пор, пока код не равен 500 и номер строки меньше 100, выполняем наращивание счетчика
Row_End = Row_End +1
Loop
Таким образом, процедура While нам нужна только для наращивания счетчика — никаких дополнительных действий она не производит. Запомните этот прием — он часто нужен в кодировании.
Теперь заменим в изначальном коде макроса номер последней ячейки (34) на переменную Row_End. Число 34 было частью текста А1:С34, а теперь нам надо часть текста заменить на переменную. Делается это с помощью символа амперсанд &:
«текст» & переменная & «текст».
В нашем случае ссылка на диапазон А1:С34 будет записана так: А1:С & Row_End.
Кроме того, вспоминаем, что и название отчета Бюджет на январь у нас тоже теперь содержит параметр и будет записываться так: Бюджет на & Mes.
Не забывайте оставлять пробелы в кавычках перед переменной-словом, иначе текст сольется.
Еще раз взглянем на получившийся код макроса:
Sub Форматирование_БДР()
‘ Макрос выделяет жирным курсивом итоги, форматирует отчет на печать
‘ ——————
‘ Запрашиваем у пользователя месяц отчета
Mes = InputBox(«Введите название месяца отчета», , «Январь»)
‘ Ищем последнюю строку отчета
Dim Row_End As Integer ‘ Вводим переменную «счетчик номера строки»
Row_End = 1 ‘ Присваиваем ей номер 1
‘ Начинаем процедуру поиска последней строки отчета по коду «500»
‘ Критичным значением для «защиты от дурака» принимаем номер строки 100
Do While Cells(Row_End, 1).Value <> «500» And Cells(Row_End, 1).Value <> 500 And Row_End < 100
‘ До тех пор, пока код не равен 500 и номер строки меньше 100, выполняем наращивание счетчика
Row_End = Row_End +1
Loop
‘ Выделяем столбцы и ставим фильтр на КОД
Columns(«A:C»).Select
Selection.AutoFilter
ActiveSheet.Range(«$A$1:$C$» & Row_End).AutoFilter Field:=1, Criteria1:=»<>*.*», _
Operator:=xlAnd
‘ Выделяем отфильтрованный диапазон полужирным шрифтом, снимаем фильтр
Range(«A1:C» & Row_End).Select
Selection.Font.Bold = True
Selection.AutoFilter
‘ Форматируем на печать: верхний колонтитул, центрирование по горизонтали, масштаб 75 %
With ActiveSheet.PageSetup
.CenterHeader = «Бюджет на » & Mes
.CenterHorizontally = True
.Zoom = 75
End With
End Sub
Теперь макрос стал более универсальным. Добавим в него еще одну «защиту от дурака».
Если нам принципиально, правильно ли макрос нашел последнюю строку отчета, после окончания процедуры While (строка Loop) можно добавить блок проверки значения Row_End и запроса у пользователя подтверждения на продолжение макроса.
Для этого изучим функцию MsgBox, процедуру IF и команду Exit Sub.
Функция MsgBox
MsgBox — еще один способ общения с пользователем: сообщения ему какой-то информации по ходу выполнения макроса или запрос у него подтверждения по дальнейшим действиям макроса путем нажатия на кнопки вида Yes, No, Ок, Cancel.
Она имеет два вида записи:
1. Мы просто сообщаем пользователю какую-то информацию. В этом случае аргументы функции перечисляются сразу же за функцией, без использования скобок:
MsgBox «Текст сообщения», <Вид кнопок>, <«Текст в шапке окна»>,…
На экране отобразится диалоговое окно, и после нажатия пользователем кнопки Ок продолжится выполнение макроса (рис. 8).
Рис. 8. Первый вид записи функции MsgBox
Как и в случае с функцией InputBox, обязательным здесь является только первый аргумент — Текст сообщения. Остальные можно даже не указывать, сократив вид записи функции до вида:
2. Нам важно, что ответил пользователь, мы записываем его ответ в значение какой-то переменной (рис. 9). В этом случае аргументы функции заключаются в скобки, а перед функцией обязательно должна стоять переменная, в которую мы записываем, на какую кнопку нажал пользователь:
YesNo = MsgBox(«Текст сообщения», <Вид кнопок>, <«Текст в шапке окна»>,…)
Рис. 9. Второй вид записи функции MsgBox
Варианты вида кнопок:
- vbOKOnly — только кнопка ОК;
- vbOKCanсel — кнопки ОК и Cancel;
- vbYesNo — кнопки Yes и No;
- vbYesNoCancel — кнопки Yes, No и Cancel.
Соответственно в зависимости от нажатой кнопки значения функции MsgBox могут быть vbOK, vbCancel, vbYes или vbNo.
Процедура If
С помощью данной процедуры можно разбить команды кода на две ветки в зависимости от выполнения заданного условия. Синтаксис процедуры If:
If <условие, которое должно быть верным> Then
<список команд при выполнении указанного условия>
else
<список команд при невыполнении указанного условия>
End If
Обязательным к заполнению является только условие. Список команд в обоих блоках заполнять не обязательно. В зависимости от ваших задач вы можете заполнить оба блока или только один из них. Условие может состоять из одного выражения или содержать несколько выражений, перечисленных через оператор AND (то есть оба условия должны быть выполнены) или оператор OR (достаточно выполнения только одного из перечисленных условий).
Команда Exit Sub
Прекращает выполнение макроса. Обычно ее используют в ветках процедуры If при проверке допустимости дальнейшего исполнения макроса. Обратите внимание: ни одно действие после команды Exit Sub выполнено не будет. Поэтому если вы хотите сообщить пользователю о принудительном прекращении процедуры, команду MsgBox нужно расположить выше команды Exit Sub.
Итак, объединим новые знания в код «защиты от дурака» и запишем его после строки Loop:
‘ Проверяем, дошла ли процедура While до «критичной» строки 100
‘ и спрашиваем подтверждение о продолжении выполнения макроса
If Row_End = 100 Then
YesNo = MsgBox(«Поиск последней строки отчета дошел до 100, продолжаем?», vbYesNo)
If YesNo = vbNo Then ‘ Если нажата кнопка «No», то…
MsgBox «Процедура прервана пользователем» ‘ 1. выдаем сообщение для пользователя,
Exit Sub ‘ 2. останавливаем макрос
End If
End If
В нашем коде прошло вложение одной процедуры If в другую:
- сначала мы проверили, дошел ли счетчик Row_End до значения 100;
- если дошел, мы спрашиваем у пользователя, продолжать ли нам выполнение макроса;
- если пользователь ответил «нет», останавливаем макрос.
В обеих процедурах If мы опустили второй блок (else): если Row_End не достиг значения 100 или пользователь ответил «да», макрос просто покинет процедуру If и продолжит выполнять команды, написанные ниже.
Каждая процедура If должна заканчиваться командой End If. Если количество строк с командой If не будет соответствовать количеству строк с командой End If, компилятор VBA сообщит об ошибке и вам придется искать, где вы потеряли конец процедуры If.
Поэтому рекомендуется сразу писать обе строки, а потом уже наполнять процедуру командами.
Также для удобства визуального восприятия кода макроса рекомендуется каждую вложенную процедуру начинать с отступа, чтобы визуально было понятно, где заканчивается вложенная процедура и продолжается список команд процедуры верхнего уровня.
Подведем итоги
Мы с вами научились:
- записывать макросы через команду Вид Макросы Запись макроса;
- редактировать автоматически записанный макрос, удалять из него лишние команды;
- унифицировать код макроса, вводя в него переменные, которые макрос запрашивает у пользователя или рассчитывает самостоятельно,
а также изучили функции InputBox и MsgBox, процедуры While и If, команду Exit Sub.
В следующем номере рассмотрим процедуру FOR, запишем макрос суммирования результирующих статей БДР, научимся тестировать макросы и выносить кнопки вызова макроса на панель быстрого доступа.
Статья опубликована в журнале «Справочник экономиста» № 4, 2016.