Шрифт:
Рис. 3.9. Вставка модуля
Для начала написания программы надо в окне программы написать "Sub Имя программы", после чего Редактор VBA сам добавит фразу "End Sub", и между этими двумя фразами должен заключаться текст основной части программы (рис. 3.10).
Рис. 3.10. Начало создания программы
3. "Модули класса". Класс — это особое понятие, играющее очень важную роль в программировании. Коротко можно сказать, что это — "тип объектов, определяемый программистом, содержащий как параметры этих объектов, так и программный код, обеспечивающий работу с этими объектами".
К примеру, надо написать программу, которая работает с электронными версиями классных журналов в школе. В каждом журнале есть множество подразделов: и список учеников, и список их оценок, и система вычисления средней оценки каждого из учеников, и список предметов, и много чего еще… Можно, конечно, на Visual Basic for Applications описать устройство каждого классного журнала: создать списки учеников, организовать таблицы с оценками, но тогда при однотипных действиях с группой журналов (например, надо посчитать средний балл оценок всех учащихся седьмых и восьмых классов) придется включать в код очень много операций с каждым компонентом журнала. Также при добавлении нового журнала придется писать программный код для создания списка учащихся, списка предметов и др. Это все очень усложнит программу и потребует большой затраты труда программиста. Поэтому в Visual Basic for Applications имеется понятие класса — то есть нового типа объектов, могущих содержать программный код для своей обработки. Так, можно создать класс "Журналы" и описать в его модуле класса содержимое объектов этого класса: список учеников — (Public Ученики(40) As String), предметов (Public Предметы(20) As String) и др. Теперь для создания нового объекта класса "Журналы" — нового журнала — не надо заниматься утомительным описанием вновь создаваемых списков учеников и предметов: будет достаточно в одной строчке написать команду "Объявить новую переменную класса Журналы" (Dim Журнал25 As Журналы) и присвоить нужные значения соответствующим разделам этого новосозданного журнала (Журнал25.Ученики(1)="Андреев" и.т.д.). Теперь можно в модуле класса написать программу вычисления средней оценки всех учащихся, и при необходимости сделать такой подсчет вызывать ее одной командой.
4. "Формы". Формы — это диалоговые окна программ, которые можно разработать по своему вкусу. Для того, чтобы в проект добавить форму, надо из контекстного меню в Менеджере проектов выбрать пункт "Вставить"-"UserForm". Будет создано пустое диалоговое окно, в которое можно поместить кнопки, картинки, текст и др. Пример сложной пользовательской формы — на рис. 3.11.
Рис. 3.11. Пример сложной пользовательской формы
Не обновлять экран во время работы. Если этот пункт не F отмечен, то Вы сможете наблюдать за процессом создания книжки, но это серьезно замедлит работу.
Подробнее о формах будет рассказано в следующей главе.
5. "Ссылки". Программы могут запускаться на выполнение не только в результате действий пользователя, но и в результате вызова из другой программы. Однако запустить программу можно только из загруженного в Word проекта (шаблона или документа). Если постоянно загружать проект нецелесообразно (например, подобный вызов используется достаточно редко), то для запуска из загруженного проекта программы из другого, незагруженного шаблона нужно поставить на него ссылку (делается это путем простого перетаскивания иконки шаблона в окно Менеджера проектов). В таком случае будет возможен доступ ко всем программам в этом шаблоне из программ проекта, в котором находится ссылка.
Кроме того, с помощью диалогового окна Редактора VBA "Сервис — Ссылки" можно создать ссылки на различные программные компоненты — библиотеки[227]. В этом случае у вас появится возможность использовать эти компоненты, не включая их в свою программу, а просто вызвав по имени. (Для создания ссылки на какую-либо библиотеку достаточно поставить галочку против ее названия.) Например, если в какой-нибудь библиотеке содержится программа отображения на экране циферблата часов с определенным временем, то, подключив ее к своей программе — создав на нее ссылку — можно отображать эти часы простым вызовом данной программы (возможно, с определенными параметрами — скажем, временем, которое эти часы должны показывать).
Для того, чтобы та или иная библиотека стала доступной для создания на нее ссылок, ее нужно, помимо копирования на жесткий диск компьютера, особым образом зарегистрировать в системном реестре. Последнее обычно производится программами-инсталляторами при установке программного продукта, содержащего эту библиотеку.
Окно текста программ и дизайна форм (Code Window). Это и есть основное рабочее место программиста на Visual Basic for Applications. Именно здесь пишется текст программ и разрабатываются диалоговые окна. Для того, чтобы открыть его для какого-либо компонента проекта, надо просто два раза щелкнуть на нем мышью или выбрать из контекстного меню пункт "Программа".
Редактор Visual Basic for Applications — очень дружественный редактор. Он постоянно подсказывает программисту, какие параметры имеет та или иная команда, как надо корректно ее написать. Например, если набрать команду MsgBox (эта команда вызывает на экран диалоговое окно, например, такое, как всем известное окошко "Сохранить изменения в документе?") и набрать после нее открывающую круглую скобку, то над курсором сразу же появится подсказка (см. рис. 3.12.), из которой можно получить информацию о синтаксисе данной команды, то есть о том, как конкретно нужно задавать ее параметры (в данном случае текст окошка, количество кнопок, значок и звук при появлении) в тексте программы.
Рис. 3.12. Контекстная подсказка редактора VBA
Язык Visual Basic for Applications называется объектно-ориентированнным. Это значит, что очень многие его команды имеют особенный формат, отличный, скажем, от формата Basic или Pascal, которые изучались в школах лет десять назад. Типичная команда Visual Basic for Applications имеет такой вид: <Объект>.<Объект, входящий в первый объект>.<.„>.<Тот объект, с которым нужно произвести действие>. «Собственно действие>. Иными словами, каждая команда пишется как бы "с конца": вначале определяется то, над чем надо произвести действие — объект, а затем само действие — метод. Разделителями компонентов команды служат знаки "точка". Вот пример такой команды: