VBA для чайников
Шрифт:
В Access, хотя и можно создавать макросы, содержащие последовательности команд, они не сохраняются в виде VBA-кода автоматически (подробности вы найдете ниже во врезке Макросы - не росы). Средство записи макросов отсутствует во всех версиях Access - там есть специальное окно для выбора команд, которые вы собираетесь поместить в макрос.
Макрос- это просто еще одно название для VBA-программы. Средство записи макросов во время своей работы конвертирует каждую из используемых вами команд в соответствующие строки программного кода VBA. Законченный макрос сохраняется как процедура VBA. Процедуры, как разъясняется Б главе 6, - это отдельные
Еще один теоретический момент: макросы есть и в Access, и в VBA, но в Access они не являются VBA программами. Макросы в Access создаются с помощью последовательности команд в специально предлагаемом для этого диалоговом окне, Боюсь еще больше запутать дело, но я должен тут добавить, что макрос в Access может вызывать VBA-процедуру Access. Вот так-то.
Когда следует записывать макрос
Макросы экономят время и снимают раздражение. Это действительно так. Компьютер воспроизведет последовательность команд куда быстрее, чем это сделаете вы, щелкая на соответствующих кнопках команд и выбирая пункты соответствующих меню. При этом компьютер не допустит ни единой ошибки. И ваше настроение, несомненно, улучшится, поскольку люди обычно не любят повторять одно и то же больше двух-трех раз подряд.
Поэтому проверьте, не приходится ли вам снова и снова повторять в приложении одни и те же последовательности команд. Как только вы обнаружите, что такие последовательности у вас есть, сразу же запишите их виде макроса. А еще лучше, если вы знаете наперед, что какую-то новую последовательность команд вам придется использоваться и в дальнейшем, запишите соответствующий ей макрос уже при первом случае ее применения. И уже со следующего раза используйте макрос.
Макрос - и вещь хорошая, и развитие стимулирует
Макросы очень полезны для своего прямого назначения, но не менее полезны они для использования программного кода записанного макроса как примера для начала освоения программирования в VBA. После того как вы запишете несколько макросов, вы наверняка загоритесь желанием как-нибудь их улучшить и сделать более гибкими. В результате совсем небольших усилий с помощью VBA вы можете добавить своим макросам немного интеллекта и заставить их выполнять различные действия в зависимости от ситуации. Это будет обсуждаться ниже, в разделе Редактирование макросов как способ создания программного кода.
Планирование макросов
Прежде чем вы пропустите этот тоскливый раздел и с головой погрузитесь в процесс записи макросов, выслушайте один довольно консервативный совет: чтобы избежать лишней головной боли, уделите немного времени планированию макроса перед тем, как записывать его.
Можно, конечно, запустить средство записи макросов и начать громоздить одну за другой команды сразу, как только в голове появится хотя бы смутное представление о том, что должен делать ваш новый макрос. Вот только средство записи макросов очень добросовестно запишет буквально каждую из вызываемых вами команд, в том числе и все допущенные вами ошибки. А в восьми или девяти случаях из десяти такие ошибки у вас будут.
Ясно,
что можно удалить неудавшийся макрос и начать все сначала. Но можно и избавить себя от таких проблем, если потратить немного времени на планирование макроса.Продумайте те шаги, которые должен выполнять макрос, предварительно попробуйте их, чтобы убедиться, что результат будет соответствовать запланированному, и только затем записывайте макрос.
При планировании макроса учитывайте все специальные условия, необходимые для его правильной работы. Процесс записи должен включать и добавление в макрос команд, нужных для воссоздания этих необходимых условий.
Представьте, например, что вы работаете в Microsoft Word. Скажем, требуется, чтобы макрос вставлял текущую дату в начало каждого документа. Можно, конечно, предположить, что текстовый курсор при этом уже находится в самом начале документа. Но не следует быть столь самоуверенным. Даже если курсор находится в нужном месте, когда вы начинаете записывать макрос, все равно первой записываемой командой должна быть команда перемещения курсора в начало документа. Только тогда макрос будет работать правильно, независимо от того, где окажется текстовый курсор.
Запись макросов
К счастью, записывать макросы так же просто, как ложиться в постель. Тем более, что я собираюсь разложить здесь вам все по полочкам.
Запуск средства записи макросов
Запустить средство записи макросов можно одним из следующих способов.
* Выбрать из меню Сервис=Макрос=Начать запись. В последних версиях Office меню Макрос может не появляться до тех пор, пока вы не щелкнете на кнопке с направленной вниз стрелкой внизу в меню Сервис.
* В панели инструментов щелкнуть на кнопке Начать запись макроса, если у вашего t; приложения таковая есть. Например, в Microsoft Office кнопка Начать запись макроса расположена в панели инструментов Visual Basic.
В результате любого из этих действий появится диалоговое окно Запись макроса.
На рис. 2.1 показано диалоговое окно Запись макроса из Microsoft Excel (это окно в разных приложениях выглядит по-разному).
Как выбрать имя для малютки
Стараясь быть полезным, диалоговое окно Запись макроса предложит самое оригинальное из подходящих имен для вашего нового макроса- Макрос1 (или Макрос2, или МакросЗ). Вежливо поблагодарив, быстренько удалите предлагаемое имя и впечатайте вместо него нечто более вам подходящее.
Рис. 2.1. Диалоговое окно Запись макроса в Excel
Имена макросов должны, конечно, ассоциироваться с выполняемыми ими задачами.
Однако при этом следует придерживаться определенных правил. Ну-ка, повторяйте все хором за мной.
* Имя макроса должно начинаться с буквы, а не с цифры. А вот после первой буквы уже могут идти и цифры.
* Имя макроса не должно содержать пробелов. Для выделения начала слов в имени макроса следует использовать прописные буквы, например, как здесь:
ОчисткаВсегоЖесткогоДиска
* Знаки пунктуации тоже не допускаются. Здесь есть исключения, но вполне разумно в именах макросов знаки пунктуации не использовать вообще. Если в именах присутствуют знаки пунктуации. VBA выводит сообщение Invalid procedure name (Недопустимое имя процедуры).