Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на BASIC / Visual Basic / Учебно-методическое пособие по изучению Visual Basic for Applications (VBA).doc
Скачиваний:
207
Добавлен:
02.05.2014
Размер:
1.55 Mб
Скачать

2U Object Browser

<AII Libraries> Z. — \ Чй1-+^ f

FormatArialBoldl2 ^J йПГ

"Search Results"

Classes

Щ ListRow _^J

Й ListRows

<ff> LoadPictureConstan—'

® Mailer

t=P MailFormat

«41 Math

*^!Moduie'l ITI

Members of'ModuleV .«•: Format AnalBoldl2

Public Sub FormatArialBoldl2() Member of VBAProiect Modulet

Макрос записан 12.11.2007 (Titov)

_

Рис. 6 22

щелкните на кнопке #4 Search (Поиск) в окне Object Browser. Object Browser выполняет поиск текста, который вы ввели в окно Search Text, в вашем проекте VBA (а также в других открытых в данный момент библиотеках);

После выполнения поиска меняется вид окна Object Browser: оно отображает список Search Results (рис. 6). Если Object Browser обнаружил макросы, совпадающие с текстом в окне Search Text (Образец поиска), они отображаются в списке Search Results (Результаты поиска). В противном случае, в этом списке отображается сообщение No items found (Элементы не найдены).

Щелкните на макросе в списке Search Results, затем - на кнопке Ш View Definition (Описания) в окне Object Browser. Редактор VB открывает Code Window (Программы) для модуля, содержащего этот макрос, и отображает исходный код макроса (листинг 1).

Листинг 1 - Текст макроса FormatArialBold12

  1. Sub FormatArialBold12()

  2. '

  3. ' FormatArialBold12 Макрос

  4. ' Макрос записан 12.11.2007 (Titov) Форматирует текст диапазона: Arial, Bold, 12

  5. ' 6

7 '

8 With Selection.Font

  1. .Name = "Arial"

  2. .FontStyle = "полужирный"

  3. .Size = 12

  4. .Strikethrough = False

  5. .Superscript = False

  6. .Subscript = False

  7. .OutlineFont = False

  8. .Shadow = False

  9. .Underline = xlUnderlineStyleNone

  10. .ColorIndex = xlAutomatic

19 End With

20 End Sub

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

Если ваш проект не содержит большого количества различных модулей, то легче находить макрос, выполняя следующую альтернативную процедуру:

ь нажмите Alt+F11, чтобы открыть Редактор VB;

ь выберите View/Project Explorer (Вид/Окно проекта), чтобы отобразить Project Explorer;

ь в Project Explorer выделите проект VBA, в котором вам необходимо

23

найти макрос;

  • выберите команду View/Object Browser (Вид/Просмотр объектов). Редактор VB отображает диалоговое окно Object Browser;

  • выделите имя вашего проекта в раскрывающемся списке Project/Library окна Object Browser. Если только вы не изменили имени вашего проекта, он называется VBAProject в Excel;

  • выделите модуль в списке Classes (Классы). Окно Object Browser отображает теперь все макросы в выделенном модуле в списке Members of <object> (Компонент <объект>). Точный заголовок этого списка изменяется в зависимости от объекта, выделенного в списке Classes;

  • выделите макрос, исходный код которого вам необходимо увидеть, в списке Members of <object>;

  • щелкните на кнопке Ш View Definition (Описания) в окне Object Browser. Редактор VB открывает Code Window для модуля, содержащего этот макрос, и отображает исходный код макроса.

Если вы рассмотрите несколько записанных макросов, то заметите, что все они имеют общие элементы. Листинг 1 показывает исходный код для макроса FormatArialBoldl2 в Excel, который вы записали при изучении части 1. В листинге 1 строка 1 является началом записанного макроса. Каждый макрос VBA начинается с ключевого слова Sub, за которым следует имя макроса. Строку, содержащую ключевое слово Sub и имя макроса, называют строкой объявления (declaration) макроса. За именем макроса всегда следуют пустые круглые скобки.

Строки 2-7 являются комментариями. Комментарий (comment) - это строка в макросе VBA, которая, действительно, не содержит инструкции, являющиеся частью этого макроса. Для VBA любой текст, который следует за апострофом (ключевым словом Rem), представляет собой комментарий, начинающийся с апострофа и заканчивающийся в конце этой строки. Записанный макрос всегда начинается со строк комментариев, формулирующих имя макроса и содержащих текст, который вы ввели в текстовое окно Description (Описание) диалогового окна Record Macro (Запись макроса) в момент записи этого макроса. Конкретное количество и содержимое строк комментариев в записанном макросе зависит от длины вводимого вами описания.

Сразу за объявлением макроса следует тело (body) макроса (которое может включать или не включать строки комментариев). В листинге 1 строки 8-19 составляют тело макроса FormatArialBodyl2. Каждая строка в теле макроса состоит из одного или более операторов VBA. Оператор (statement) VBA - это последовательность ключевых слов и других символов, которые вместе составляют одну полную инструкцию для VBA. Макрос VBA состоит из одного или нескольких операторов. Операторы VBA в записанном макросе содержат инструкции, соответствующие действиям, которые вы выполняли, когда записывали этот макрос. Например, строка 9 в листинге 1 устанавливает шрифт Arial, - строка 10 - размер шрифта и так далее.

За телом макроса следует строка, содержащая ключевые слова End Sub, которые сообщают VBA о том, что достигнут конец макроса. Макрос в листинге 1 заканчивается в строке 20.

24

Когда вы запускаете макрос, VBA начинает выполнение кода с первой строки в теле этого макроса (первая строка после объявления макроса) и выполняет инструкции в этой строке последовательно слева направо. Затем VBA переходит к следующей строке и выполняет инструкции в ней и так далее, пока он не достигнет конца макроса, обозначенного оператором End Sub. VBA игнорирует любые строки комментариев, которые могут появиться в теле макроса.

Как вы могли уже заметить, многие строки в записанном макросе имеют отступ от левого края. Каждый уровень отступа помогает отделять одну часть макроса от другой. Заметьте, что все тело каждого макроса смещено вправо между ключевыми словами SubEnd Sub для наглядного выделения тела макроса. В других местах (в строках 9-18 в листинге 1) операторы расположены с еще большим отступом. Этот второй, больший уровень отступа помогает определить все операторы, заключенные между ключевыми словами WithEnd With. В следующих частях оператор WithEnd With будет рассмотрен подробнее.

Макрорекордер при создании макроса автоматически делает отступы в коде, чтобы пользователю было легче читать записанный макрос. Когда вы будете писать собственные макросы, следует всегда делать отступы в коде для выделения различных логических разделов. Отступы строк - это просто традиция, поддерживаемая программистами для лучшего восприятия текста.

Когда вы будете просматривать записанный макрос на экране (используя Редактор VB), то заметите, что различные части текста макроса отображаются различными цветами. Комментарии отображаются зеленым цветом, тогда как Sub, End Sub и другие ключевые слова VBA - синим. Остальной текст в макросе отображается черным цветом для указания на то, что он содержит данные и программные операторы, созданные пользователем. VBA выполняет цветовое кодирование текста на экране, чтобы можно было легко определить, какую часть макроса или оператор вы просматриваете.

При редактировании кода макроса в модуле вы можете использовать команды и методы, известные вам как пользователю Windows, Word или Excel.

Для сохранения изменений, которые вы вносите в модуль, используйте команду File/Save (Файл/Сохранить) Редактора VB или щелкайте на кнопке И Save (Сохранить) на панели инструментов. Любые изменения, которые вы выполняете в модуле, также сохраняются всякий раз, когда вы сохраняете файл рабочей книги, содержащий этот модуль. (Excel выдает запрос на сохранение любых изменений, выполненных в Personal.xls, при выходе.)

Задание 3. Добавьте в макрос FormatArialBoldl2 символ продолжения строки.

Для этого:

  • переместите курсор вставки в строку 10 за знак =;

  • напечатайте один пробел и символ подчеркивания ( ) и нажмите клавишу Enter;

  • выполните макрос FormatArialBoldl2.

Замечание 3. Символу подчеркивания предшествует пробел, отделяя его от

25

другого текста в строке. Эта особая комбинация символа пробела, за которым следует символ подчеркивания в конце строки, называется символом продолжения строки (line-continuation character) и сообщает VBA о том, что следующая строка макроса должна быть присоединена к текущей строке для образования единого оператора. Операторы, разделенные (уместнее было бы говорить «объединенные») символом продолжения строки, размещаются с еще большим отступом, чтобы их было легче обнаружить при чтении кода.

Перемещение или копирование макроса из одного модуля в другой

Для копирования одного макроса используйте Clipboard, выполняя следующие шаги:

ь отобразите макрос, который вам необходимо копировать;

ь выделите весь текст исходного кода макроса. Убедитесь, что вы выделили весь макрос, включая строки Sub, End Sub и все строки между ними;

ь выберете команду Edit/Сору (Правка/Копировать) для копирования текста макроса в Clipboard;

ь отобразите модуль, в который вам необходимо копировать этот макрос;

ь выберете команду Edit/Paste (Правка/Вставить) для вставки текста макроса в модуль.

Упражнение 1

Создайте произвольный макрос не содержащийся в Module1 и переместите его в Module1.

Замечание 4. Вы можете пользоваться описанным выше методом для копирования макроса в тот же модуль, в другой модуль одного и того же проекта или в модуль другого проекта. Можно также использовать этот метод для вставки текста макроса в другие приложения Windows.

Сохранение и перенос модулей как текстовых файлов

Если вам необходимо сделать резервную копию всего модуля, вы можете сохранить его как текстовый файл. Сохранение целого модуля как текстового файла полезно, если вы хотите импортировать модуль в другой проект VBA, создать архивные копии вашей. Такое сохранение модуля называется экспортированием модуля. После того как вы экспортируете модуль, вы можете импортировать его в любой проект VBA или Visual Basic.

Для экспортирования модуля как текстового файла выполните следующее:

ь выделите в Project Explorer модуль, который хотите экспортировать;

ь выберите команду File/Export File (Файл/Экспорт файла). Редактор VB отображает диалоговое окно Export File (Экспорт файла) (рис. 7);

ь в списке Папка (Save In) выберете диск и папку, в которой вы хотите сохранить текстовый файл;

ь введите имя экспортируемого файла в текстовое окно Имя файла (File Name). Редактор VB вводит имя модуля по умолчанию;

ь убедитесь, что в списке Тип файла (Save as type) выделен пункт Basic Files (*.bas). Расширение *.bas определяет этот файл как файл исходного кода VBA или Visual Basic. Информация, сохраняемая в этом файле, – это читаемый

26

текст;

ь щелкните на кнопке Сохранить (Save), чтобы экспортировать файл. Редактор VB экспортирует выделенный модуль и закрывает диалоговое окно Export File.

Рис. 7

Упражнение 2

Экспортируйте Module1 в Excel.

Замечание 5. Когда вы экспортируете модуль, Редактор VB создает файл читаемого текста, содержащий все макросы в этом модуле. Если необходимо, вы можете просматривать или редактировать файлы *.bas, созданные Редактором VB, с помощью Блокнот или Visual Basic. Обратите внимание на то, что текст в файле *.bas, отображенный приложением Блокнот, содержит строки, начинающиеся со слова Attribute и отсутствующие в модуле в Code. Редактор VB добавляет эти дополнительные строки к экспортированному файлу *.bas, поскольку они содержат информацию, которая потребуется VBA или Visual Basic, если вы в дальнейшем будете импортировать файл *.bas в другой проект.

Вы можете добавлять любой модуль, экспортированный вами как файл *.bas, в любой из проектов VBA. Модуль добавляется в проект импортированием текстового файла *.bas. Для того чтобы импортировать файл *.bas, выполните следующее:

ь выделите проект в Project Explorer, в который необходимо импортировать файл *.bas;

ь выберите команду File/Import File (Файл/Импорт файла). Редактор VB отображает диалоговое окно Import File (Импорт Файла) рис. 8;

ь в списке Папка (Look In) выберете диск и папку, в которой содержится файл, который вам необходимо импортировать в ваш проект. Это должен быть файл, который вы создали, используя Редактор VB для экспортирования модуля;

ь Убедитесь, что в списке Тип файлов (Files Of Type) выделен пункт VB Files (*.frm, *.bas, *.cls);

ь щелкните мышью дважды на имени файла, который вам необходимо

27

импортировать. Редактор VB читает файл и добавляет модуль в ваш проект. Если проект уже содержит модуль с тем же именем, что и модуль, импортируемый вами, Редактор VB добавляет число в конец имени модуля (1, 2, 3 и так далее) для создания уникального имени модуля.

Соседние файлы в папке Visual Basic