Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA_lektsii.doc
Скачиваний:
0
Добавлен:
01.01.2020
Размер:
3.91 Mб
Скачать

1.2.3. Ссылка на объект

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

Рассмотрим сначала ссылку на одиночный объект Application. Чтобы задать свойство Caption (заголовок приложения Excel), необходимо обратиться непосредственно к объекту Application:

Application.Caption = "Мое приложение"

Ссылка на семейство рабочих книг Workbooks – тоже одиночный объект – запишется следующим образом:

КолОткрытыхКниг = Workbooks.Count

В данной команде значение свойства Count (количество открытых рабочих книг) присваивается переменной КолОткрытыхКниг.

Обратимся теперь к объекту семейства. Ссылка на рабочую книгу – объект семейства Workbooks – может включать либо номер1 этой книги в семействе:

Автор = Workbooks(i).Author

либо её название2:

Автор = Workbooks("Мои таблицы.xls").Author

ВНИМАНИЕ! При обращении к объекту семейства обязательно используйте в имени семейства множественное число (Workbooks, Worksheets…). Это правило выполняется для всех семейств Excel, кроме Range и SeriesCollection.

Исключение: объект Range

Один из объектов Excel – Range, оп­ределяющий ссылку на ячейку или диапазон ячеек рабочего листа Excel, – не попадает ни в одну из этих категорий. Это одиночный объект, обладающий, тем не менее, некоторыми свойствами семейства. Например, чтобы обратиться к ячейке или конкретному диапазону ячеек, надо указать его адрес или имя, как в случае с объектом семейства. Например, изменить содержимое ячейки A1 можно с помощью следующей команды:

Range("A1").Value = 1

Команда: Range(1).Value = 1 вызовет сообщение об ошибке.

Задавая свойство или вызывая метод объекта Range, можно использовать диапазон из нескольких ячеек. Для задания свойства Value ячеек из интервала адресов B1:E4 применяется следующая инструкция:

Range("B1:E4").Value = 1

1.3. Иерархия объектов ms Excel

Объекты Excel расположены на разных уровнях. Некоторые из них включены в другие объекты. Уровни удобно представлять в виде иерархической структуры (Рис. 1.1). Имена семейств написаны в прямоугольниках, а имена объектов семейств заключены в круглые скобки.

1.3.1. Иерархическая структура

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

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

Window – открывает доступ к различным окнам Excel;

Workbook – представляет файл рабочей книги;

WorksheetFunction – используется для вызова функции рабочего листа из программы.

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

Рис. 1.1. Иерархия объектов MS Excel

Рис. 1.1. Иерархия объектов Excel (окончание)

Каким образом иерархия объектов влияет на способ написания программы VBA?

Предположим, вы пишете подпрограмму для задания свойства Value объекта Range, представляющего первую ячейку первого рабочего листа первой книги Excel. Из иерархических схем видно, что он располагается «под» объектом Worksheet, который, в свою очередь, подчиняется последовательно объектам Workbook и Application. Поэтому полная запись пути к нему выглядит так1:

Application.Workbooks(l).Worksheets(l). _ Range("A1").Value = 1

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

Инструкция, показанная выше, будет выполнена в любом месте программы и все­гда присвоит свойству Value первой ячейки A1 первого листа первой книги зна­чение 1, поскольку в ней путь к объекту Range указан полностью, начиная с объекта Application. Но если код выполняется в Excel, что чаще всего и бывает, ссылка на объект Application не обязательна. При отсутствии такой явной ссылки VBA будет считать, что программа выполняется для объекта, представляющего Excel, поэтому обращение к нему из инструкции можно убрать:

Workbooks(1).Worksheets(1).Range("A1).Value = 1

Далее, если нужная вам книга является активной, то ссылку на неё можно опустить, и тогда команда запишется так:

Worksheets(1).Range("A1).Value = 1

То же самое относится к рабочему листу: если в рабочей книге всего один лист или первый лист является активным, то ссылку на первый лист можно убрать, и тогда инструкция запишется так:

Range("A1").Value = 1

Некоторые объекты Excel имеют «свойство по умолчанию». У объекта Range свойством по умолчанию является Value (значение), что позволяет еще более сократить код2:

Range("A1") = 1

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

ActiveWorkbook.Worksheets(1).Range("A1").Value = 1

Эта команда изменяет значение в ячейке активной рабочей книги (необязательно первой).

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

ActiveSheet.Range("A1").Value = 1

Для обращения к активному диапазону, т.е. к группе выделенных ячеек, используется также свойство Selection объекта Application. Однако оно может ссылаться не только на объекты Range. При выполнении программы VBA определяет значение свойства Selection в соответствии с выделенным в данный момент объектом. Поэтому свойства по умолчанию (из-за разных объектов) нет.

Selection.Value = 1

Выполнение этой команды вызывает присвоение значения выделенному диапазону, будь это Range("Al")или Range("G7:N25").

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