Чтение онлайн

на главную - закладки

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

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

Обзор области видимости

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

Область видимости процедуры может быть одной из следующих трех типов.

* По умолчанию процедуры VBA (за исключением процедур обработки событий) рассматриваются как открытые (public). Это значит, что вы можете вызывать их из любой части программы - из того же модуля, из другого модуля и даже из другого проекта (конечно, если программа использует несколько проектов, что обсуждается в главе 14).

* Если нужно, можно объявить процедуру локальном (private). Локальная процедура будет видима (если вы пожелаете) только внутри содержащего ее модуля. Другими словами, вы сможете вызвать локальную процедуру из других процедур того же модуля, но не из процедур, размещенных в других модулях.

* В VBA-программах, использующих несколько проектов, можно создавать процедуры, доступные изо всех модулей в рамках данного проекта, но не из других проектов.

Точно такие же области видимости задаются и переменным (подробно об этом - в разделе Задание области видимости переменной главы 7).

Задание области видимости процедуры

Чтобы задать область видимости процедуры, нужно в начале объявления процедуры просто напечатать ключевое слово Public или Private. Взгляните на следующие примеры:

Public Sub IKr.eadYouO

...( операторы процедуры)

End Sub

Private Function IKneedYou

.. . (операторы процедуры)

End Function

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

Чтобы ограничить область видимости открытой процедуры рамками одного проекта и сделать ее недоступной для других проектов, поместите в раздел объявлений соответствующего модуля оператор Option Private Module. Подробности об использовании таких операторов вы найдете ниже, в разделах Объявления и Параметры компилятора.

Использование локальных процедур

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

Объявить процедуру локальной несложно, но зачем беспокоиться? В конце концов, VBA же не требует вызывать процедуру только потому, что она открыта!

Главной причиной является повышение надежности. Вы можете забыть, что данная процедура предназначена для использования только внутри модуля. Если процедура локальна.

VBA не позволит вам вызвать ее из другого модуля, когда вы попытаетесь это сделать.

А в программах значительных объемов и сложности уменьшение области доступа к процедуре еще и помогает контролировать организацию программы.

Использование операторов

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

Объявления

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

Объявив объект, вы можете использовать его в любом месте программы.

Рассмотрим пример объявления переменной. Переменные - это именованные значения, которые могут изменяться во время выполнения программы (подробно об этом - в главе 7).

В следующем операторе объявляется переменная с именем МоеЛюбимоеЧисло и заявляется о том, что значение, которое она будет содержать, должно быть целым:

Dim МоеЛюбимоеЧисло As Integer

В главе 7 обсуждаются также константы, представляющие собой именованные значения, которые не меняются. Следующий оператор создает строковую константу (текст) с именем НеизменныйТекст, представляющую собой набор символов Вечность:

Constant НеизменныйТекст = Вечность

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

Следующим оператором объявляется пользовательский тип данных с именем Самоделкин, определяя его как структуру, включающую строковую переменную с именем

Имя и переменную типа Date с именем ДеньРождения. В данном случае объявление займет несколько строк:

Type Самоделкин

Имя As String

ДеньРождения As Date

End Type

Следующее объявление создает процедуру типа Sub с именем СкрытаяПроцедура, говоря о том, что эта процедура будет локальной в смысле области видимости. Завершающий процедуру оператор End Sub считается частью объявления. Предполагается, что операторы, составляющие тело процедуры, вы должны напечатать сами:

Поделиться:
Популярные книги

Точка Бифуркации V

Смит Дейлор
5. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Точка Бифуркации V

Газлайтер. Том 25

Володин Григорий Григорьевич
25. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 25

Память льда

Эриксон Стивен
3. «Малазанская империя»
Фантастика:
фэнтези
6.00
рейтинг книги
Память льда

Дерзкие побеги

Нестерова Дарья Владимировна
Документальная литература:
прочая документальная литература
5.00
рейтинг книги
Дерзкие побеги

Тихие ночи

Владимиров Денис
2. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Тихие ночи

Как прорастают зерна

Волкова Дарья
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Как прорастают зерна

Виконт, который любил меня

Куин Джулия
2. Бриджертоны
Любовные романы:
исторические любовные романы
9.13
рейтинг книги
Виконт, который любил меня

Газлайтер. Том 27

Володин Григорий Григорьевич
27. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 27

Вернувшийся: Новая жизнь. Том I

Vector
1. Вернувшийся
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Новая жизнь. Том I

Я уже барон

Дрейк Сириус
2. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я уже барон

Матабар IX

Клеванский Кирилл Сергеевич
9. Матабар
Проза:
магический реализм
5.00
рейтинг книги
Матабар IX

Пески времени

Шелдон Сидни
Детективы:
триллеры
9.02
рейтинг книги
Пески времени

Эффект энтропии

Макинтайр Вонда Н.
2. Звездный путь
Фантастика:
эпическая фантастика
космическая фантастика
5.00
рейтинг книги
Эффект энтропии

Князь Целитель 5

Ткачев Андрей Юрьевич
5. Князь Целитель
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Князь Целитель 5