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

на главную

Жанры

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 считается частью объявления. Предполагается, что операторы, составляющие тело процедуры, вы должны напечатать сами:

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

Императорский отбор

Свободина Виктория
Фантастика:
фэнтези
8.56
рейтинг книги
Императорский отбор

Начальник милиции 2

Дамиров Рафаэль
2. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции 2

Держать удар

Иванов Дмитрий
11. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Держать удар

Ты не мой Boy 2

Рам Янка
6. Самбисты
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Ты не мой Boy 2

Проданная Истинная. Месть по-драконьи

Белова Екатерина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Проданная Истинная. Месть по-драконьи

Идеальный мир для Лекаря 5

Сапфир Олег
5. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 5

Холодный ветер перемен

Иванов Дмитрий
7. Девяностые
Фантастика:
попаданцы
альтернативная история
6.80
рейтинг книги
Холодный ветер перемен

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Его наследник

Безрукова Елена
1. Наследники Сильных
Любовные романы:
современные любовные романы
эро литература
5.87
рейтинг книги
Его наследник

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Семья. Измена. Развод

Высоцкая Мария Николаевна
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Семья. Измена. Развод

Новая Инквизиция 2

Злобин Михаил
2. Новая инквизиция
Фантастика:
фэнтези
боевая фантастика
городское фэнтези
5.00
рейтинг книги
Новая Инквизиция 2

Приручитель женщин-монстров. Том 1

Дорничев Дмитрий
1. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 1

Свои чужие

Джокер Ольга
2. Не родные
Любовные романы:
современные любовные романы
6.71
рейтинг книги
Свои чужие