Материал: Программирование на языке Visual Basic для приложений. Подвальный С.Л., Рог А.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

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

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

7.4. Классы объекта

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

MS Word, Excel, Access, PowerPoint, Outlook и т.д. при-

надлежат к общему классу объектов — host-приложений VBA. При запуске Word на вашем компьютере вы создаете экземпляр Word. При наличии достаточных ресурсов памяти в компьютере вы можете запустить Word более одного раза; каждый раз при запуске Word будет создаваться еще один экземпляр Word. Каждый раз при создании или открытии документа в Word создается экземпляр объекта Document. Аналогично, каждая копия Excel, выполняемая на компьютере, является экземпляром приложения Excel, а каждая рабочая книга, откры-

108

тая в данный момент, является экземпляром объекта Workbook.

VBA дает возможность пользователю создавать собственные классы объектов добавлением модуля класса в проект. Ваш модуль класса должен содержать все определения свойств и методов для объекта. После описания нового класса вы можете создавать его экземпляры (объекты этого типа).

7.5. Использование объектов

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

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

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

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

Например, можно определить имя активного в данный момент рабочего листа в Excel, выполняя выборку строки, сохраняемой в свойстве Name рабочего листа. Чтобы изменить имя рабочего листа, необходимо присвоить новую строку свойству Name этого рабочего листа. Для добавления рабочего листа в рабочую книгу используется метод Add рабочей книги.

Прежде чем применять свойства и методы некоторого объекта, их следует сначала определить.

В операторах VBA используйте следующий общий синтаксис для определения свойства или метода объекта:

Object.identifier

Object — любая допустимая ссылка на объект. Объектные ссылки создаются заданием переменной для ссылки на объект или использованием методов или свойств объектов, возвращающих объектную ссылку. Identifier — любое допустимое имя свойства или метода; VBA отображает сообщение о

109

runtime-ошибке при попытке использовать свойства или методы, которые не являются в действительности частью указанного объекта.

 

 

Таблица 7.1

 

 

Наиболее важные объекты Excel

Имя объекта

 

Описание объекта

Application

Само приложение Excel (host-приложение)

Chart

Диаграмма в рабочей книге

Font

Этот объект содержит атрибуты шрифта и

 

стиля для текста, отображаемого в рабочем

 

листе

Name

Заданное имя для диапазона ячеек рабочего

 

листа

Range

Диапазон ячеек (одна или более) или имено-

 

ванный диапазон в рабочем листе

Window

Любое окно в Excel; окна используются для

 

отображения рабочих листов, диаграмм и т.д.

Workbook

Открытая рабочая книга

Worksheet

Рабочая таблица в книге

 

 

Таблица 7.2

 

 

Наиболее важные объекты Word

Имя объекта

 

Описание объекта

Application

 

Само приложение Word (host-приложение)

Bookmark

 

Отдельная закладка в документе

Document

 

Открытый документ

Font

 

Содержит атрибуты шрифта и стиля для

 

 

текста, отображаемого в объекте

Paragraph

 

Отдельный параграф в документе

Range

 

Непрерывная область в документе

Style

 

Встроенный или определенный пользовате-

 

 

лем форматирующий стиль в документе

Table

 

Отдельная таблица в документе

110

 

Продолжение табл. 7.2

TableOfContents

Отдельная таблица содержания документа

Template

Шаблон документа

Window

Любое окно в Windows

Из таблиц видно, что Excel и Windows имеют похожие объекты.

7.6. Использование свойств объектов

Свойства объектов можно использовать только двумя способами: получать значение свойства или устанавливать его. Как уже было упомянуто, не все свойства объекта изменяемы. Свойства объектов, которые нельзя изменять, называ-

ют свойствами, доступными только на чтение (read-only),

свойства, которые можно устанавливать, называют свойства-

ми, доступными на чтение/запись (read-write).

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

Обращение к свойству объекта имеет следующий синтаксис:

Object. Property

Object — допустимая объектная ссылка VBA, тогда как Property представляет любое допустимое имя свойства для объекта, на который выполняется ссылка.

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

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

Variable = Object. Property

Variable — переменная, имеющая совместимый со свойством объекта тип; Object — ссылка на объект, a Property — имя свойства объекта, на который выполняется ссылка.

111

Вследующем примере строка, сохраняемая в свойстве Name рабочего листа Excel, на которую ссылается объектная переменная aSheet, присваивается переменной AnyStr:

AnyStr = aSheet.Name

Можно также использовать свойство объекта непосредственно в каком-либо выражении или в качестве аргумента функции или процедуры. Следующие строки представляют обоснованное использование свойства объекта (в каждой строке InstSheet является объектной переменной, заданной для ссылки на рабочий лист Excel):

MsgBox InstSheet.Name

AnyStr = "Эта ячейка имеет имя: " & InstSheet.Name MsgBox LCase (InstSheet.Name)

Почти каждый объект в VBA имеет свойство, которое содержит его имя. Следующий оператор использует MsgBox для отображения свойства FullName в объекте рабочей книги Excel; свойство FullName содержит имя диска, путь к папке и имя файла рабочей книги:

MsgBox InstBook.FullName

Вприведенном выше примере InstBook — это переменная, заданная для ссылки на объект открытой рабочей книги. Если InstBook ссылается на рабочую книгу с именем Sales.xls

впапке My Documents, то окно сообщения, вызываемое приведенным выше оператором, отображает строку "С:\Му Documents\SALES.XLS".

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

Object. Property = Expression

Object —допустимая объектная ссылка, Property — свойство объекта, на который выполняется ссылка, a Expression —выражение VBA, которое вычисляется до типа, совместимого со свойством.

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

InstSheet.Name = "Первый квартал"

112

Источник: https://studfile.net/preview/16565567/