Пятница, 09.20.2024, 3:35 AM
Приветствую Вас Гость | RSS

Электронный учебник по VBA MS Excel 2010

Автоматическая запись макроса

Макрорекордер

Запись макроса - это очень полезная штука, которую придумал Microsoft. Вот например, Вы постоянно выполняете одну и ту же работу в книге Excel, и это вам уже надоело. Вот бы придумать такую штуку чтобы один раз показал как делается, а потом всё само на автомате, нажал кнопочку и сидишь такой довольный косынку раскладываешь, а программа сама работает. Вот именно это и придумали в Microsoft, только назвали всё это дело - Запись макроса.

Хорошо, что некоторые уже поняли о чём идёт речь. Так давай те же посмотрим что это такое и как им поскорее научиться пользоваться.

Запись макроса можно включить двумя способами:
1 - Заходим в вкладку разработчик и нажимаем пиктограмму Запись макроса:

2 - это нажимаем пиктограмму в нижнем левом углу окна книги:

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

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

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

Или нажав на пиктограмму в левом нижнем углу книги

Существует два вида записи макросов - это запись с прямыми ссылками и запись с относительными ссылками.
Вот теперь давайте по подробнее.

Запись макроса с прямыми ссылками

Запись макроса с прямыми ссылками означает, что все наши действия, которые мы записали, точно так же повторятся при воспроизведении макроса. Например, мы нажали Запись макроса и записали в ячейку А1 слово "Привет", в ячейку В1 "Пока", а в ячейку С1 "Привет". После этого остановили запись. Потом нажали выполнение записанного макроса, перед этим очистив ячеки и убрав курсор на совершенно другую ячйку, и у нас снова в Ячеке А1 появилось слово "Привет", в ячейке В1 "Пока", а в ячейке С1 "Привет". И куда бы мы не перемещли курсор и как бы мы не запускали макрос у нас запись будет производиться только в ячейках A1, B1 и C1.

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

        Sub PrivetPoka()

          '

          ' PrivetPoka Макрос

          '

 

          '

              Range("A1").Select

              ActiveCell.FormulaR1C1 = "Привет"

              Range("B1").Select

              ActiveCell.FormulaR1C1 = "Пока"

              Range("C1").Select

              ActiveCell.FormulaR1C1 = "Привет"

        End Sub

На этом примере видно, что первоначально у нас происходит выделение ячейки и только потом занесение в неё текста. Поэтому, как бы мы не старались выполнять макрос на других ячейках и занести в них текст, у нас ничего не выйдёт, всё равно будет записываться в тех ячейках, в которых мы заносили текст при выполнении записи макроса. Об этом ярко выражено демонстрируют прямые ссылки (Range("A1").Select, Range("B1").Select, Range("C1").Select) в коде примера.

Вот это и называется запись прямыми ссылками, когда чётко указаны адреса и значения всего происходящего.

Запись макроса с относительными ссылками

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

При наведении на пиктограмму можно прочитать в подсказке суть этой записи. Но я всё таки попробую объяснить более подробней.
Итак, при включении данной опции записи у нас происходит запись макроса следующим образом. Если при записи прямыми ссылками у нас чётко прописывался адрес ячейки (А1), то в случае с записью относительной ссылки у нас запишется ссылка на начальное положение курсора, относительно которой будет происходить дальнейший отсчёт. Например у нас курсор находится в ячейке А1, мы написали в ней "Привет", затем переместили курсор в ячейку А2 и в ней записали "Пока", после этого переместили курсор на А3 и записали в ней "Привет". После этого мы останавливаем запись макроса и пытаемся его выполнить. Ставим курсор в ячейку А1 и унас автоматически в ячейке А2 записывается "Пока", а в ячейке А3 записывается "Привет". После этого перемещаем курсор в ячейку В1 и снова нажимаем выполнить макрос. При этом у нас в ячейке В1 будет "Привет", в ячейке В2 "Пока", в В3 "Привет". Это всё потому, что макрорекордер записывает относительные ссылки, т.е. ссылки произведённые относительно первоначального состояния курсора. Выглядеть этот код будет например так:

        Sub PrivetPoka()

          '

          ' PrivetPoka Макрос

          '

   

          '

              ActiveCell.FormulaR1C1 = "Привет"

              ActiveCell.Offset(0, 1).Range("A1").Select

              ActiveCell.FormulaR1C1 = "Пока"

              ActiveCell.Offset(0, 1).Range("A1").Select

              ActiveCell.FormulaR1C1 = "Привет"

        End Sub

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

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

< < Предыдущая глава Следующая глава > >
Поиск

Динара Илькаева © 2024
Бесплатный конструктор сайтов - uCoz