Редактирование макросов как способ создания программного кода
Не следует думать, что средству записи макросов останется только собирать электронную пыль, когда вы научитесь самостоятельно создавать VBA-код. В действительности, тогда вы сможете использовать это средство еще чаше. В конце концов, наиболее эффектные VBA-программы сильно зависят от объектов, методов и свойств, заимствованных именно из приложения. Вместо того чтобы печатать соответствующие команды вручную, почему бы не записать их как макрос?
Не забывайте, что в результате записи макроса все использованные вами команды будут записаны в виде последовательности соответствующих операторов языка VBA. Полученный таким образом программный код можно использовать в качестве отправной точки при создании своей программы, добавляя в него новые операторы по мере необходимости. По крайней мере, для команд, записанных как макрос, вам не придется вспоминать точную форму входящих в них операторов VBA и заботиться о допущенных при наборе ошибках.
Кроме того, такой подход предлагает самый простой способ связать с кнопками в панелях инструментов и с комбинациями клавиш свои собственные программы, конечно, если приложение позволяет сделать соответствующие назначения при записи макроса (см. выше раздел Кнопка, кнопка, ты чья?).
Редактирование программного кода макроса в редакторе Visual Basic
После того как макрос записан, полученную VBA-программу вы можете отредактировать (или, по крайней мере, просто взглянуть на строки ее программного кода). Вот как это сделать.
1. Выберите Сервис=Макрос=Макросы или нажмите Alt+F8, чтобы открыть диалоговое окно Макрос (см. рис. 2.5).
2. Выберите нужный вам макрос из списка ниже поля Имя.
Макрос, который вы только что записали, не выбирается автоматически, поэтому, чтобы найти его, вам, вероятно, придется полистать список.
3. Щелкните на кнопке Изменить.
Перед вами немедленно возникнет окно редактора Visual Basic с помещенным в него программным кодом выбранного макроса, готовым для редактирования. Пример показан на рис. 2.6.
Простейшие усовершенствования макросов
В этой главе не предполагается подробно рассматривать приемы редактирования макросов в редакторе Visual Basic. В конце концов, это те же самые приемы, которые используются при создании любых VBA-программ и которые, в основном, обсуждаются в этой книге.
Все же я считаю целесообразным предложить здесь несколько простых и обычно полезных способов усовершенствования макросов. Предлагаемые идеи требуют минимальных программистских усилий, но позволяют сделать макрос более гибким. Попробуйте следующее.
Рис.2.6. Запись макроса завершена, и перед вами - его программный код, созданный генератором средства записи макросов
Организуйте повторение команд в макросе. Возможно, вам известно наперед, что придется выполнить целую последовательность команд (или какую-то одну команду) ровно 11 раз. В этом случае все, что вам нужно, - это добавить в свой программный код цикл For. . .Next. Вы спрашиваете, что такое цикл For . . . Next? Это один из элементов языка программирования VBA, обсуждать которые я собираюсь в главе 8.
Организуйте повторение команд в макросе с выяснением количества необходимых повторений непосредственно во время работы макроса. Если вы достаточно амбициозны, добавьте в свой макрос сразу и цикл For. . .Next, и функцию InputBox. Последняя выводит на экран диалоговое окно, предлагающее ответить на некоторый вопрос, в данном случае - о количестве повторений. Использование InputBox обсуждается в главе 11.
Добавьте при вызове возможность выбора текста для использования макросом.
Макрос, который всегда вставляет в документ один и тот же текст, не слишком гибок.
Добавив в записанный макрос функцию InputBox, вы сможете сообщать при каждом запуске макроса, какой текст нужно вставить. Снова напомню, что подробности об использовании InputBox вы найдете в главе 11.
Добавьте возможность выбора перед запуском макроса. Довольно часто для правильной работы макроса требуется выбрать текстовый, графический или какой-то другой объект. Структура If. . . End If языка VBA позволяет проверить, выбран ли объект подходящего типа, чтобы иметь возможность отменить работу макроса в случае невыполнения каких-либо условий. Все тонкости использования оператора If... End If обсуждаются в главе 8.
Как только вы осознаете привлекательность использования средства записи макросов в совокупности с самыми минимальными усилиями по добавлению VBA-кода, вас непременно привлечет и программирование. После этого ваше превращение в компетентного VBA-программиста станет только вопросом времени и не потребует слишком большим усилий.
Глава 3. Основы программирования на VBA.
В этой главе ...
~ Запуск редактора Visual Basic
~ Использование справочной системы VBA
~ Программирование в VBA - краткое и нестрогое руководство
Макросы хороши до определенных пределов, но гораздо больше можно получить от полноценных VBA-программ. Эта глава послужит аварийным введением в рациональное VBA-программирование. После вводного обзора редактора Visual Basic и справочной системы VBA мы с вами на простом примере разберем по шагам процесс построения VBA-программы. Эти знания станут тем солидным базисом, который потребуется для освоения всего остального материала книги.
Вызов редактора Visual Basic
Редактор Visual Basic служит командным центром для работы в VBA. В нем вы должны находиться при разработке VBA-форм, создании VBA-кода, тестировании и отладке VBA программ. Экспертом по использованию редактора Visual Basic вы станете после прочтения главы 5, а пока вам нужно только знать, как вытянуть этот редактор на экран.
Если вы делали кое-что из того, о чем так много говорилось в предыдущей главе при обсуждении программного кода, создаваемого средством записи макросов, вы должны уже знать один из способов вызова редактора Visual Basic- выбор макроса в диалоговом окне
Макрос с последующим щелчком на кнопке Изменить. Но, конечно же, можно запустить редактор Visual Basic и непосредственно. В большинстве VBA-приложений можно воспользоваться одним из следующих методов.
* Выбрать из меню Сервис=Макрос=Редактор Visual Basic.
* Нажать Alt+Fll. Вы услышите, как затараторит жесткий диск, и через несколько мгновений на экране появится редактор Visual Basic. Он должен хотя бы отдаленно напоминать то, что изображено на рис. 3.1.
В некоторых приложениях вам понадобится проделать другой маршрут, чтобы добраться до редактора Visual Basic. Однако вы в любом случае найдете необходимую команду где-нибудь в меню Tools (Сервис).
Вызов редактора Visual Basic одним щелчком
Если в вашем приложении есть кнопка в панели инструментов для вызова редактора Visual Basic. используйте се. В VBА-приложениях из пакета Microsoft Office (Word. Excel и PowerPoint) эта кнопка помещена в панель инструментов Visual Basic (рис. 3.2). Наборы кнопок в этой панели инструментов у разных приложений могут немного отличаться.
Рис. 3.1. Редактор Visual Basic
Рис, 3.2. Вид панели инструментов Visual Basic в приложении Word
Кнопки в этой панели инструментов, как правило, соответствуют пунктам подменю Макрос из меню Сервис. Вот для чего предназначены некоторые из этих кнопок (слева направо, см. рис. 3.2).
* Первые две кнопки предназначены соответственно для выполнения и записи макросов.
* Кнопка справа от кнопки Безопасность вызывает редактор Visual Basic. Если вы часто используете редактор Visual Basic, а другие кнопки в этой панели инструментов вам не нужны, скопируйте кнопку вызова редактора в другую панель. Чтобы скопировать кнопку в любом из приложений Office, перетащите ее на новое место, удерживая при этом нажатой клавишу Alt.
* Кнопка с изображенными на ней молотком и гаечным ключом открывает панель элементов управления, очень похожую на панель элементов управления VBA. В Office вы можете поместить элементы управления VBA в сам документ, а не только в VBA-форму.
* Кнопка с изображенными на ней линейкой, треугольником и карандашом включает режим проектирования, в котором вы можете редактировать элементы управления VBA в своем документе.
Краткое знакомство с редактором Visual Basic
Первые обращения к редактору Visual Basic могут вас озадачить. Наверное, присутствие меню и панелей инструментов вверху экрана покажется вам привычным, но вот что означает это обилие окон? Предсказать их взаимное расположение практически невозможно, поскольку они размещаются и комбинируются почти в бесконечном разнообразии вариантов (даже когда вы открываете редактор Visual Basic впервые, все равно предстающая перед вами картина допускает немало вариантов, в зависимости от того, как вы его открыли).
Кроме того, если вы не профессиональный программист, названия окон и их функции окажутся для вас наверняка непонятными.
Научить вас уверенно обращаться со всеми этими окнами должна глава 5, здесь же я приведу только список их имен и функций (табл. 3.1).