Ссылки на одиночные объекты и объекты из семейств 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ссылки на одиночные объекты и объекты из семейств



Как уже говорилось, при обращении к свойству или методу объекта их имена просто добавляют к имени объекта, отделяя от него точкой. Ссылка же на сам объект может выглядеть по-разному. К одиночному объекту семейства обращаются либо по имени, либо по его номеру в семействе объектов. Чтобы разобраться, чем отличаются два этих способа, уясним себе, что такое семейство (collection). Если не вдаваться в детали, семейство — это группа похожих объектов. Все объекты Excel можно отнести к одному из двух приблизительно равных по численности классов: одиночным объектам и объектам из семейства [3]. К первым обращаются непосредственно, ко вторым – по имени или по номеру. В предыдущих примерах обращение к рабочей книге Мои таблицы.xls было оформлено с помощью указателя на объект семейства Workbooks [4] по имени.

Различия между одиночными объектами и объектами из семейств

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

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

В Excel может быть открыто несколько рабочих книг, поэтому к объекту Мои таблицы.xls можно было бы, согласно правилу 2, обратиться по индексу, предварительно узнав его порядковый номер. Следующий пример демонстрирует эту возможность:

Sub СсылкаНаКнигуПоИндексу()

'1. Объявляем переменные:

Dim Автор        As String

Dim КолОткрытыхКниг As Integer

'2. Определяем количество открытых книг:

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

'3. Ищем среди открытых книг книгу с именем Мои таблицы.xls:

For i = 1 To КолОткрытыхКниг

If Workbooks(i).Name = "Мои таблицы.xls" Then

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

MsgBox "Автор этой книги: " & Автор

Exit Sub

End If

Next i

MsgBox "Книга Мои таблицы.xls среди открытых книг не найдена!"

End Sub

В этом примере обратите внимание на комментарии – текст, расположенный после апострофа ('). Программу с пояснительными комментариями значительно легче отлаживать и вносить в неё изменения. Помните, что в программе без комментариев её детали забываются через удивительно короткое время!

Замечания:

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

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

§ назначение программы;

§ указания по вызову программы и её использованию;

§ список и назначение основных переменных и массивов;

§ указания по вводу-выводу. Список всех файлов;

§ список используемых подпрограмм и их назначение;

§ требования к компьютеру;

§ сведения об авторе;

§ дату написания программы.

3. Для улучшения наглядности программы вставляйте пустые строки и делайте отступы.

Семейства как объекты

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

Семейство Workbooks содержит несколько объектов Workbook, с каждым из которых связан набор свойств и методов. Другой набор свойств и методов связан с семейством Workbooks. Таким образом, в Excel есть тривидаобъектов: одиночный объект, объект семейства и собственно семейство, которое тоже является одиночным объектом.

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

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

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

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

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

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

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

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

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

либо её название[6]:

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

ВНИМАНИЕ! При обращении к объекту семейства обязательно используйте в имени семейства множественное число (Workbooks, Worksheet s …). Это правило выполняется для всех семейств 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

Иерархия объектов MS Excel

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

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

Рис. 1‑2. Иерархия объектов Excel (продолжение)

Для чего же нужно знать иерархию объектов Excel?

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

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

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

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

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

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

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

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

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 (значение), что позволяет еще более сократить код[8]:

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").



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 51; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.66.178 (0.013 с.)