Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2313

.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
1.4 Mб
Скачать

Следующий пример изменяет текст, отображаемый в строке состояния в нижнем левом углу окна приложения, присваивая строку свойству StatusBar объекта Application (объект Application — это host-приложение VBA, в данном случае

— Excel):

Application.StatusBar = "Генерировать отчет за третий квартал" Используйте свойство Application.StatusBar в своих процедурах для отображения сообщений о действиях, которые выполняет процедура, особенно если некоторые из этих действий занимают много времени (например, сортировка длинного списка). Добавляя сообщение в строку состояния, вы даете знать пользователю, что процедура все еще работает. Исполь-

зуйте оператор, подобный следующему: Application.StatusBar = "Сообщение о текущих действиях"

Не забывайте возвращать управление строке состояния при работе в Excel. В Excel необходимо устанавливать свойст-

во Application.StatusBar в False, когда процедура выполнена,

иначе Excel продолжает отображать заданное вами сообщение строки состояния. Используйте оператор, подобный следующему, для удаления сообщения из строки состояния и возврата управления строке состояния:

Application.StatusBar = False

 

 

 

Таблица 7.3

 

Некоторые свойства объектов в Excel

Свойство

 

Тип/Что означает

Где найти

ActiveCell

 

Object: активная ячей-

Application, Window

 

 

ка в рабочем листе

 

ActiveChart

 

Object: активная диа-

Application, Window,

 

 

грамма

Workbook

ActiveSheet

 

Object: активный лист

Application, Window,

 

 

 

Workbook

Address

 

Возвращает координа-

Range

 

 

ты ячейки указанного

 

 

 

объекта

 

113

 

 

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

Cells

Диапазон объекта

 

Application, Range,

 

Range

 

Worksheet

Charts

Коллекция диаграмм

 

Application, Work-

 

 

 

book

Count

Integer: число объек-

 

Все объекты коллек-

 

тов в коллекции

 

ции

Formula

String: формула для

 

Диапазон

 

ячейки рабочего листа

 

 

Index

Integer: число объек-

 

Worksheet

 

тов в коллекции

 

 

Name

String: имя объекта

 

Application, Work-

 

 

 

book и в других объ-

 

 

 

ектах

Path

String: драйвер и ката-

 

Addin, Application,

 

лог, в котором сохра-

 

Workbook

 

нен объект

 

 

Saved

Boolean: сохранялась

 

Workbook

 

ли рабочая книга по-

 

 

 

сле последних изме-

 

 

 

нений

 

 

Selection

Object: текущий выде-

 

Application, Window

 

ленный фрагмент

 

 

Sheets

Коллекция листов ра-

 

Application, Work-

 

бочей книги

 

book

StatusBar

String: сообщение в

 

Application

 

статусной строке

 

 

ThisWorkBook

Object: рабочая книга,

 

Application

 

из которой выполня-

 

 

 

ется текущая проце-

 

 

 

дура

 

 

Type

Integer: число, указы-

 

Window, Worksheet,

 

вающее тип объекта

 

Chart

114

 

 

Окончание табл. 7.3

Visible

Boolean: отображается

Application, Work-

 

или нет объект на эк-

sheet, Range и в дру-

 

ране

гих объектах

Value

(варьируется): дейст-

Range

 

вительное значение,

 

 

отображаемое в ячей-

 

 

ке

 

Workbooks

Коллекция рабочих

Application

 

книг

 

Worksheets

Коллекция рабочих

Application, Work-

 

листов

book

Некоторые свойства из табл. 7.3 использованы в коде следующего листинга.

Листинг. Активный лист, ячейка

1Sub TestObjectOl()

2'имя активного листа

3MsgBox ActiveSheet.Name

5'адрес активной ячейки:

6MsgBox ActiveCell.Address

8'содержимое активной ячейки

9MsgBox ActiveCell.Formula 10: 11: End Sub

Как видите, даже небольшие знания об объектах дают

некоторые дополнительные возможности для работы со средой Excel. Но все еще впереди.

 

 

 

Таблица 7.4

 

Некоторые свойства объектов Word

Свойство

 

Тип/Значение

Имеется в объектах

ActiveDocument

 

Object: активный до-

Application

 

 

кумент

 

115

 

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

ActivePrinter

String: имя активного

Application

 

принтера

 

ActiveWindow

Object: активное окно

Application, Docu-

 

 

ment

Count

Long: число объектов

Во всех объектах

 

в коллекции

коллекций

Name

String: имя объекта

Application, Book-

 

 

mark, Dictionary,

 

 

Document и в др.

Path

String: драйвер и путь

Addin, Application,

 

к папке, в которой со-

Dictionary, Docu-

 

хранен объект

ment и в других

Range

Object: часть докумен-

Bookmark, Para-

 

та, содержащаяся в

graph, Selection,

 

указанном объекте

Table и в других

Saved

Boolean: был ли со-

Document, template

 

хранен текст после

 

 

последнего изменения

 

Selection

Object: текущий выде-

Application, Pane,

 

ленный фрагмент

Window

StatusBar

String; сообщение

Application

 

строки состояния

 

Visible

Boolean: отображается

Application, Border

 

объект на экране или

 

 

нет

 

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

Запустите Word. Откройте два документа. В одном из них в Редакторе VBA создайте новый модуль и введите код следующего листинга.

Листинг. Активный документ

1 Sub ActDocum()

116

2

3MsgBox ActiveDocument.Name, , _

4"Наименование активного документа"

6MsgBox ActiveDocument.Path, , _

7"Путь сохранения документа"

9 ActiveDocument.Close 'закрыть активный документ

10:

11:MsgBox ActiveDocument.Name, ,

12:"Наименование активного документа"

13:End Sub

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

Методы объекта используются в операторах VBA так, как использовались бы любые встроенные процедуры VBA.

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

Object.Method

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

Object.Method Argument1, Argument2, Argument3 ...

В обеих строках синтаксиса Object представляет любую допустимую объектную ссылку VBA, a Method — имя любого метода, принадлежащего объекту, на который выполняется ссылка. Во второй строке синтаксиса Argument1, Argument2 и т.д. представляют аргументы в списке аргументов метода. Как в случае с аргументами для вызова процедуры VBA, необходимо перечислять аргументы метода в определенном порядке, отделяя каждый аргумент в списке запятой и включая отме-

чающие запятые (place holding commas) для пропущенных не-

обязательных аргументов. Метод может иметь один или несколько аргументов в своем списке или не иметь их совсем; аргументы метода могут быть обязательными или необязательными.

Пример: рабочие книги Excel имеют метод Activate, который делает рабочую книгу активной и активизирует первый

117

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

InstBook.Activate

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

ActiveWorkbook.SaveAs Filename:=_ "C:\Papka1\NEWFILE.xls", FileFormat:=xlNormal Word-объекты Document также имеют методы Activate и

SaveAs с похожими аргументами. Первый оператор, приведенный ниже, активизирует документ, на который ссылается переменная InstDoc, а второй — использует метод SaveAs документа для сохранения активного документа под другим именем:

InstDoc.Activate

ActiveDocument.SaveAs Fileame:="C:\VBA2000\Chapl0.doc"

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

Пример: Excel-метод Address (который принадлежит объекту Range) возвращает адрес диапазона ячеек в рабочем листе как строку. В следующем примере показан оператор VBA, который использует метод Address (myRange — это объектная переменная, которая ссылается на диапазон ячеек в рабочем листе):

MsgBox myRange.Address

118

Если переменная myRange ссылается на первую ячейку в рабочем листе, то оператор MsgBox в приведенной выше строке примера отображает строку $А$1.

Хотя в этом примере метод Address вызывается без ка- ких-либо аргументов, он, на самом деле, имеет несколько необязательных аргументов. Эти необязательные аргументы определяют стиль адреса ячеек рабочего листа, возвращаемого методом, а также, являются ли координаты ячеек абсолютными или относительными. В следующем примере показан вызов метода Address с его третьим необязательным аргументом (который определяет стиль возвращаемых координат ячеек):

MsgBox myRange.Address(, , xlRlCl)

В этом операторе необходимо в список аргументов метода включать отмечающие запятые для пропущенных необязательных аргументов, как для любой другой процедуры или функции. Поскольку аргумент ссылочного стиля является третьим аргументом, ему предшествуют две отмечающие запятые в списке аргументов. X1R1C1 — это внутренняя константа Excel, указывающая на то, что координаты ячеек рабочего листа используют стиль записи R1C1; если объектная переменная myRange ссылается на ячейку во второй строке и третьем столбце, то отображается строка R2C3 (вторая строка, третья колонка).

Методы имеют также именованные аргументы, как и другие процедуры и функции VBA. Можно переписать последний пример, используя именованные аргументы, следующим образом:

MsgBox myRange.Address(ReferenceStyle:=x1R1C1)

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

InstBook.SaveAs "NEWNAME.XLS", xlNormal, , , , True InstBook.SaveAs FileName:="NEWNAME.XLS" ,_

119

FileFormat:=xlNormal, _ CreateBackup:=True

Оба оператора используют только три из шести необязательных аргументов для метода SaveAs. Первый оператор использует стандартный список аргументов, второй — именованные аргументы. Намного легче понять назначение и действие второго обращения к методу SaveAs, чем первого.

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

 

 

 

Таблица 7.5

 

Некоторые методы объектов Excel

Метод

Назначение

Имеется в объектах

Activate

Активизирует объект

Window, Work-

 

 

 

book, Worksheet,

 

 

 

Range и в других

 

 

 

объектах

Calculate

Выполняет вычисления в от-

Application, Range,

 

крытой рабочей книге, рабо-

Worksheet

 

чем листе или диапазоне

 

Clear

Удаляет данные, сохранен-

Range

 

ные в указанном объекте

 

Close

Закрывает указанный объект

Window, Work-

 

 

 

book, Workbooks

Justify

Выравнивает текст, сохра-

Range

 

ненный в указанном объекте

 

Run

Выполняет

указанную про-

Application, Range

 

цедуру или функцию

 

Save

Сохраняет

файл рабочей

Application, Work-

 

книги

 

book

120

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

SaveAs

Сохраняет указанный объект

Workbook, Work-

 

в другом файле

sheet

Select

Выбирает указанный объект

Range, Sheets,

 

 

Worksheets

SendKeys

Пересылает нажатия клави-

Application

 

ши в диалоговые окна в host-

 

 

приложении

 

Volatile

Регистрирует функцию как

Application

 

изменяющуюся

 

В рабочей книге Excel занесите какую-либо информацию в ячейки листа и выделите какую-нибудь ячейку. Выполните код следующего листинга.

Листинг. Метод Clear для ячейки и диапазона

1Sub TestMethodsOl()

2'тестирование метода Clear

4'содержимое активной ячейки

5'до применения метода Clear

6MsgBox ActiveCell.Formula, , "До метода Clear"

8'выполнения Clear

9ActiveCell.Clear

11'содержимое активной ячейки

12'после применения метода Clear

13MsgBox ActiveCell.Formula, , "После метода Clear"

15'Очистить диапазон ячеек:

16Range("C6:D7").Clear

18End Sub

Сначала в результате выполнения кода этого листинга (строка 6) на экран выдается в диалоговом окне содержимое

121

активной ячейки С4. Метод ActiveCell.Clear очищает эту ячейку, а оператор в строке 13 выдает на экран пустое сообщение. Наконец, оператор в строке 16 очищает диапазон ячеек C6:D7. Обратите внимание на то, как задается диапазон ячеек для выполнения метода Clear.

 

 

 

Таблица 7.6

 

Некоторые методы объектов Word

Метод

 

Назначение

Имеется в этих

 

объектах

 

 

 

Activate

 

Активизирует объект

Window, Document,

 

 

 

Pane и в других объ-

 

 

 

ектах

CheckSpelling

 

Проверяет орфогра-

Document, Range

 

 

фию указанного доку-

 

 

 

мента или диапазона

 

Close

 

Закрывает указанный

Window, Document

 

 

объект

 

Delete

 

Удаляет указанный

Bookmark, Range и в

 

 

объект или удаляет

других объектах

 

 

символы и слова

 

GoTo

 

Перемещает курсор в

Document, Range, Se-

 

 

начальное положение

lection

 

 

элемента, такого как

 

 

 

страница, закладка

 

 

 

или поле; возвращает

 

 

 

объект Range

 

Printout

 

Печатает указанный

Application, Docu-

 

 

объект

ment, Envelope, Win-

 

 

 

dow

Run

 

Выполняет указанную

Application

 

 

процедуру или функ-

 

 

 

цию

 

Save

 

Сохраняет указанный

Document, Template

 

 

объект

 

122

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]