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

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

Жанры

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

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

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

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

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Хозяин Теней 4

Петров Максим Николаевич
4. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 4

Картофельное счастье попаданки

Иконникова Ольга
Фантастика:
фэнтези
5.00
рейтинг книги
Картофельное счастье попаданки

Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Корнев Павел Николаевич
Фантастика:
фэнтези
героическая фантастика
5.50
рейтинг книги
Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Доктора вызывали? или Трудовые будни попаданки

Марей Соня
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Сумеречный стрелок 7

Карелин Сергей Витальевич
7. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок 7

Жизнь под чужим солнцем

Михалкова Елена Ивановна
Детективы:
прочие детективы
9.10
рейтинг книги
Жизнь под чужим солнцем

Красноармеец

Поселягин Владимир Геннадьевич
1. Красноармеец
Фантастика:
боевая фантастика
попаданцы
4.60
рейтинг книги
Красноармеец