Как записать самый простой макрос.
Для начала давайте запишем самый легкий макрос: зададим в ячейке «А1» формат вида «12 345»:
· Открываем новую книгу, встаем в ячейку «А1» и набираем шестизначное число «123456». Сейчас оно выдается без разделителей разрядов. Запишем макрос, который ставит эти разделители.
· Заходим на панели инструментов в закладку «Вид»[1], находим кнопку «Макросы», жмем «Запись макроса»: в появившемся окне задаем имя макроса и книгу, в которой мы хотим этот макрос сохранить.
F ВАЖНО:Запустить макросы можно только из открытых книг, поэтому если Вы хотите использовать записанные Вами макросы довольно часто, то рекомендуется использовать специальную книгу макросов, которая автоматически открывается вместе с запуском сеанса Excel.
F Если Вы все-таки хотите хранить макросы в отдельном файле, эту книгу нужно сохранить, выбрав тип файла «Книга Excel с поддержкой макросов» - в противном случае, после закрытия книги макросы будут стерты из книги.
· Выбираем «Сохранить в…» - «Личная книга макросов» (см. Рис 1)
· Жмем «ОК»
Рисунок 1.Запись макроса в личную книгу макросов.
· Выполняем действия, которые мы хотим записать в макрос: вызываем контекстное меню «Формат ячеек» (можно воспользоваться комбинацией клавиш «ctrl+1»), задаем нужный нам формат числа: на закладке «Число» идем в блок «(все форматы)», и выбираем там формат вида “# ##0”. Примечание: Также этот формат можно задать в блоке «Числовой», но чуть позже Вам станет ясно, почему мы воспользовались блоком «Все форматы».
· На закладке «Вид» - «Макросы» выбираем пункт «Остановить запись»
F Второй, более быстрый, способ остановить макрос: нажать на появившийся в левом нижнем углу синий квадратик (см. рис 2.). Совет: всегда обращайте внимание на этот квадратик! Если он появился на панели, значит, сейчас идет запись всех ваших действий в Макрос, и не забывайте вовремя останавливать запись макроса, чтобы его потом не пришлось переделывать.
Проверяем, что макрос записан и работоспособен:
· Встаем в ячейку А2 и вбиваем любое шестизначное число
· Запускаем макрос одним из двух способов: на закладке «Вид» - «Макросы» выбираем пункт «Макросы» или нажимаем комбинацию клавиш «Alt+F8», далее находим в списке наш макрос и нажимаем кнопку «Выполнить».
Рисунок 2. Форматирование числа и остановка записи макроса.
Итак, Вы записали свой первый макрос! Примите поздравления. Теперь давайте познакомимся с личной книгой макросов и синтаксисом написания команд для макроса.
Личная книга макросов.
По умолчанию, Excel не отображает личную книгу макросов. Чтобы убедиться, что она открыта, выбираем на вкладке «Вид» кнопку «Отобразить» - в появившемся окне должна быть книга под именем “PERSONAL”. Мы убедились, что книга открыта, но отображать ее не будем, чтобы потом по ошибке не закрыть ее. По сути, в этой книге нас интересует так называемый «Исходный текст» - блок, в котором записываются макросы. Чтобы увидеть это окно, нажмите сочетание клавиш «Alt+F11» или кликните правой кнопкой мышки на ярлычке любого листа Excel и выберете в контекстном меню «Исходный текст». Откроется окно VBA-кодирования в Excel (рис. 3). Оно состоит из двух блоков:
1. В левой части экрана окно «Project – VBA Project» - это проводник, в котором отображаются все открытые в данный момент книги Excel (даже если Вы их не видите, как, например, книга “Personal”). Работа с этим блоком аналогичная работе в обычном проводнике – двойной клик по наименованию книги раскрывает ее содержимое – нас сейчас интересует блок «Modules – Module1». Кликаем левой кнопкой мышки дважды на этот объект.
2. В правой части экрана откроется блок записи и редактирования макросов. И здесь у Вас уже автоматически записался «Макрос1». Рассмотрим на его примере основную канву макроса.
Рисунок 3. Окно VBA-кодирования в Excel.
Синтаксис макроса.
Макросы – это команды, написанные на языке VBA, что расшифровывается как Visual Basic for Applications. Поэтому синтаксис кода макроса не отличается от записи кода в Visual Basic.
Любой макрос имеет следующий вид:
---------------------------------------------------
Sub Имя_Макроса_Без_Пробелов()
‘комментарии к макросу – они нужны для Вас, VBA не воспринимает такие строки как команды
команды, написанные на языке VBA
End Sub
--------------------------------------------------
Таким образом, макрос состоит из трех обязательных блоков:
1. Начало макроса. Всегда начинается с команды Sub и далее идет имя макроса – оно может быть на русском языке, но не должно содержать пробелы и специальные символы. В конце имени макроса всегда ставятся скобки «()» - они нужны, когда Вы создаете свою функцию, в них указываются аргументы функции, но об этом сейчас речь не пойдет.
2. Блок команд. В нашем примере он состоит из одной строки: Selection.NumberFormat = "#,##0"
Каждая команда должна начинаться с новой строки.
F Если текст команды очень длинный и визуально не помещается на экране, то его можно разбить на несколько строк, заканчивая строку символом нижнего полчеркивания «_». Ниже в примере мы это увидим.
3. Конец макроса. Всегда обозначается как End Sub.
И есть один необязательный блок – это комментарии, которые Вы можете оставлять в любом месте внутри кода макроса, поставив перед началом комментариев знак апострофа ('). Например, Вы можете описать, что именно делает тот или иной макрос. Имейте в виду: если Вы хотите разместить комментарии в несколько строк, каждую новую строку опять надо начинать с апострофа!
Итак, теперь давайте запишем более сложный макрос и научимся понимать текст его кода.
Задача1: Ваша информационная система выдает отчет «Бюджет на месяц» без выделения групповых значений каким-либо цветом или шрифтом. Необходимо выделить групповые строки полужирным шрифтом (см. рис. 4) и отформатировать на печать (расположить отчет по центру листа, задать масштаб 75%, вывести в колонтитулы название отчета).
Рисунок 4. Иллюстрация к задаче 1.