Переменные и свойства объектов в VBA

Описанные в процедурах VBA действия выполняются над переменными или объектами. Переменные VBA аналогичны переменным других языков програм­мирования. Объекты, с которыми работают процедуры и функции VBA, пред­ставляют собой средство программного управления приложениями Office 2000 и созданными с их помощью документами. Как и в других объектно-ориенти­рованных языках программирования, у объектов VBA имеются свойства, кото­рые могут принимать различные значения. Эти значения можно использовать в инструкциях VBA в качестве переменных.

ПРИМЕЧАНИЕ     

 Иерархия как общих объектов Office 2000, так и отдельных приложений описывается объектными моделями. Объектная модель описывает вложенность классов объектов, свойства, имеющиеся у объектов каждого из классов, а также методы —операции, с помощью которых можно менять значения этих свойств. Более подробно объектные модели описываются в справочной системе по программирова­нию на языке VBA и специальных изданиях, посвященных разработке приложений в рамках Office 2000.

Использованию переменной обычно предшествует ее объявление — инструк­ция Dim, в которой указывается как имя переменной, так и тип данных, для хранения которых она предназначена. Хотя такая инструкция и не обязательна (VBA может определять тип данных переменной по последнему символу ее имени: ! # $ % & @), тем не менее хороший стиль программирования требует предварительного описания всех используемых переменных. Имена переменных могут иметь длину до 255 символов (в том числе — символов кириллицы), и не должны содержать пробелов, знаков препинания и перечисленных выше специальных символов (за исключением последнего знака). Они не могут так­же совпадать с ключевыми словами VBA и именами стандартных объектов.

ПРИМЕЧАНИЕ      

Чтобы выбранное имя переменной случайно не совпало с ключевым словом или названием стандартного объекта, достаточно всегда начинать имена переменных со строчной буквы (первые символы ключевых слов и имена стандартных объек­тов автоматически преобразуются системой программирования VBA в пропис­ные).

В листинге 14.3 приведены примеры описания переменных различного типа с помощью инструкции Dim.

Листинг 14.3. Описание переменных

Dim a,   b As Integer

Dim дата_рождения As Date

Dim Фамилия As String,   Имя As String  *  25

В процедурах и функциях VBA могут использоваться следующие типы дан­ных:

О Boolean — логические переменные, принимающие одно из двух значений: ИСТИНА или ЛОЖЬ;

О Byte — целое число в диапазоне от 0 до 255;

О Currency — переменные для денежных вычислений с фиксированным коли­чеством разрядов после десятичной запятой; позволяют избежать накопле­ния погрешностей округления;

О Date — переменные для хранения даты и времени;

О Double — переменные для хранения значений с плавающей точкой удвоен­ной точности;

О Integer — целые числа в диапазоне от -32768 до 32767;

О Longцелые числа в диапазоне от -2147483648 до 2147483647;

О Object — переменные для хранения ссылок на объекты;

О Single — переменные для хранения значений одинарной точности с плаваю­щей точкой;

О String — переменные для хранения строк длиной от 0 до 64К символов;

О Variant — переменные, тип которых определяется типом последнего значе­ния, присвоенного им.

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

Листинг 14.4. Описания переменных

Sub FIOL(фамилия As String,   имя As String,   длина_строки As Integer)

длина_строки = Lеn(фамилия) + Lеn(имя) + 1

End Sub                    
Function  FIOL
еп(фамилия As String,   имя As String) As Integer

FlOlen =Lеn(фамилия) + Lеп(имя) + 1

 End  Function

В программах на VBA часто встречаются переменные, содержащие ссылку на объект — объектные переменные. Их применение позволяет удобнее организо­вать работу с различными объектами. Для задания значения объектной пере­менной (назначения ссылки на объект) используется инструкция Set. Приме­нение объектных переменных совместно с парой инструкций

With имя объектной переменной

. ..

End With

позволяет выполнить несколько операций с одним объек­том без его повторного поиска. В листинге 14.5 приведен пример процедуры, выполняющей с первой ячейкой выделенной области рабочего листа Excel сле­дующие действия: увеличивает хранящееся в ней значение на единицу; увели­чивает кегль на два пункта; изменяет на противоположный режим курсива (если значение выводилось курсивом, то будет выведено прямым шрифтом, и наобо­рот).

Листинг 14.5. Пример процедуры, изменяющей содержимое ячейки
Sub  Объектные_переменные( )
Dim  r As Object                                                                     
Set  r = Selection. Cells(1)                                                           
With  r

.Value = .Value +1

.Font. Size =  .Font. Size +2                                                 

.Font. Italic = Not (. Font. Italic)

End With

End Sub

ПРИМЕЧАНИЕ

В данном примере в качестве переменных используются три свойства обьекта
класса «ячейка рабочего листа». Значение свойства
Value определяется значени­
ем хранящегося в ячейке числа. Свойство
Font (характеристики шрифта) — состав­ное и представляет собой структуру данных, в которую, среди прочих, входят эле­ментарные свойства Font. Size (кегль символов, число) и Font. Italic (признак кур­сивного начертания, логическое значение). Обратите внимание на то, что для уточ­нения имени свойства снова используется операция, обозначаемая точкой.

 

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

Область действия процедуры или функции может ограничиваться модулем, в котором она описана, или всем проектом. Второй вариант используется по умолчанию. Если по той или иной причине требуется, чтобы имя процедуры или функции было определено только внутри модуля, в котором она описана, тогда в начало инструкции Sub или Function добавляется ключевое слово Private.

Имена стандартных объектов и их свойств определены в пределах всего проекта после подключения соответствующей библиотеки объектов. Библиотеки объек­тов (файлы с расширением .olb) содержат в себе описания классов объектов. Две стандартные библиотеки объектов содержат в себе объектную модель само­го VBA и объектную модель компонентов, являющихся общими для всех при­ложений пакета Office 2000. Кроме объектных библиотек, содержащих модели компонентов каждого из приложений, имеются библиотеки объектов, реализу­ющих связь с Web и другие новые возможности пакета, а также библиотека OLE Automation, организующая автоматизацию совместной работы приложений па­кета.

 

ПРИМЕЧАНИЕ

В проекте VBA всегда доступно несколько объектных библиотек: объектная библиотека приложения пакета Office 2000, документ которого содержит описание
проекта; общие объектные библиотеки
VBA и Office 2000; специальные библио­теки приложения. Если в проекте предполагается использовать объекты другого
приложения или объекты из дополнительных библиотек, соответствующую объект­ную библиотеку следует подключить. Это делается с помощью диалогового окна
Ссылки (
References), открывающегося при выборе команды Сервис > Ссылки (Tools >
References) в редакторе VBA. Если этого не сделать, объектная библиотека будет
недоступна и имена содержащихся в ней объектов внутри проекта будут не оп­ределены.

 

Сайт управляется системой uCoz