Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Ссылки на одиночные объекты и объекты из семейств
Как уже говорилось, при обращении к свойству или методу объекта их имена просто добавляют к имени объекта, отделяя от него точкой. Ссылка же на сам объект может выглядеть по-разному. К одиночному объекту семейства обращаются либо по имени, либо по его номеру в семействе объектов. Чтобы разобраться, чем отличаются два этих способа, уясним себе, что такое семейство (collection). Если не вдаваться в детали, семейство — это группа похожих объектов. Все объекты Excel можно отнести к одному из двух приблизительно равных по численности классов: одиночным объектам и объектам из семейства [3]. К первым обращаются непосредственно, ко вторым – по имени или по номеру. В предыдущих примерах обращение к рабочей книге Мои таблицы.xls было оформлено с помощью указателя на объект семейства Workbooks [4] по имени. Различия между одиночными объектами и объектами из семейств Как же узнать, является объект одиночным или входит в семейство? Для этого надо применить простые, интуитивно понятные правила.
В 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 с.) |