Опубликован: 01.04.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Национальный исследовательский университет "Высшая Школа Экономики"
Лекция 8:

Объекты MS Excel

< Лекция 7 || Лекция 8: 12345
Аннотация: VBA, будучи объектно-ориентированным языком программирования, манипулирует объектами приложения. Примерами объектов MS Excel являются: рабочий лист Worksheet, рабочая книга Workbook, диаграмма Chart и т.п. С точки зрения программирования в среде VBA объект обладает свойствами и методами. Свойства описывают объект, а методы позволяют управлять объектом. Рассматриваются основные свойства и методы объектов и коллекций объектов. Представлены различные способы обращения к объектам: обращение к элементу коллекции, использование контейнеров для установки ссылки на объект, использование оператора With и объектных переменных.
Ключевые слова: офисные приложения, объект, рабочий лист, worksheet, рабочая книга, workbook, диаграмма, Chart, доступ, меню, командная кнопка, синтаксис, атрибут объекта, accessor, terminate, тип значений, константы, italic, variant, formula, sheet, коллекция объектов, parent, оператор присваивания, вычисление выражения, высота, windowstate, значение, условное выражение, тип переменной, активная ячейк, interact, justify, вызов метода, argument, функциональная форма, произвольное, собственный метод, Дополнение, список, запись, лист, контейнер объектов, cross-section, спецификатор, последовательность операторов, имя объекта, макрорекордер, объектная переменная, air, goto, активный объект, application window, сохранение изменений, calculation, MS Excel, полный путь, исполняемый код, waiting, функция даты/времени, hour, ссылка, индекс, filename, установка значений, Shape, replaceability, ячейка, интервал, cell, A10, C2, UNION, оператор RANGE

Все офисные приложения можно рассматривать как совокупность объектов. Объектами являются сами приложения Application (центральный или корневой объект) и их компоненты (вложенные объекты).

Примеры объектов: рабочий лист Worksheet, рабочая книга Workbook, диаграмма Chart, рамка Border. Доступ к интервалам ячеек возможен только как к объектам Range, например, объект Range("A1") представляет ячейку A1. Каждый элемент меню, каждая командная кнопка, любой элемент рабочего листа являются объектами MS Excel.

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

В VBA возможны три типичные действия c объектами:

  • проверка свойств объекта;
  • изменение объекта посредством модификации его свойств;
  • выполнение методов объекта.

Подробно структура объектов, синтаксис свойств и методов, перечень событий рассмотрены в разделе Microsoft Excel Object Model книги под названием Microsoft Excel Visual Basic Reference справочника по VBA (Help).

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

Свойства объекта это атрибуты объекта. Каждый объект может иметь десятки свойств, например, объект Worksheet имеет 52 свойства.

Свойства делятся на две группы:

  • свойства-участники ( accessors ), представляющие вложенные объекты;
  • терминальные свойства ( terminals ), задающие характеристики объекта или его состояние.

Свойства-участники позволяют добраться до объекта, находящегося на любом уровне вложенности. Например, в записи Application.ActiveWorkbook свойство ActiveWorkbook позволяет получить доступ к объекту приложения - активной рабочей книге, а в записи ActiveWorkbook.ActiveSheet свойство ActiveSheet означает доступ к объекту рабочей книги - активной странице этой книги.

Изменение значений терминальных свойств - это один из способов изменить внешний объект.

Свойства имеют статус:

  • Read-Write (далее R/W ) предполагает возможность изменения свойства;
  • Read-Only (далее R/O ) означает, что можно только протестировать значение свойства.

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

В качестве значений свойств могут использоваться константы с префиксом xl, например, константа xlCalculationManual устанавливает ручной пересчет таблицы.

Примеры часто используемых свойств объектов
Свойство Объект Примеры Описание
Bold, Italic (R/W Boolean) Font ActiveCell.Font.Bold=True

ActiveCell.Font. Italic =False

Устанавливает полужирный шрифт. Отменяет курсив.
Column, Row (R/W Long) Range Debug.Print

Range("B3:C5").Column,

Range("B3:C5").Row

В окне Immediate будут распечатаны номер первой колонки и номер первой строки интервала ячеек B3:C5 - "2 3"
ColumnWidth (R/W Variant) Range Range("A1:B5").ColumnWidth=15 Ширина каждой колонки объекта Range 15 символов
Height, Width (Double) Многие объекты Application.Width=200 (статус R/W)

W=Range("A1:B5"). Height (статус R/O)

Ширина окна приложения 200 пт.

Возвращает суммарную высоту строк объекта Range в пунктах

RowHeight (R/W Variant) Range Range("A1:B5").RowHeight=15 Устанавливает высоту каждой строки объекта Range в пунктах
Formula (R/W Variant) Range Range("A2").Formula = "=pi()*A1^2" В ячейку А2 записывается формула
Value (R/W Variant) Range Range("A3").Value=6.28 Значение ячейки устанавливается равным 6,28
Count (R/O Long) Группа объектов N=Sheets.Count В переменную N записывается количество элементов коллекции объектов
Name (String) Многие объекты ActiveSheet.Name="Nw_Sh"(статус R/W)

Wb =ActiveWorkbook.Name(статус R/O)

Активному листу присваивается новое имя.

Переменной Wb присваивается имя активной рабочей книги.

Parent (R/O Object) Многие объекты P_t= Range("A1:B5").Parent

для объекта Range возвращает объект Sheet - рабочий лист, на котором объект Range расположен

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

Свойства объектов изменяются при помощи оператора присваивания или под влиянием методов.

Синтаксис операторов присваивания object.property=expression

  • object - ссылка на объект, над которым совершается действие;
  • property - название свойства, значение которого необходимо изменить;
  • expression - выражение, представляющее новое значение свойства объекта.

Важно

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

Например, оператор ActiveCell.Font. Bold="b" является ошибочным, так как свойство Bold имеет тип Boolean и может принимать значения только True или False.

Пример

Процедура изменяет размеры активного окна приложения. Ширина и высота окна приложения вводятся в диалоге. Свойства Height и Width для объекта Window имеют статус R/W, но эти свойства нельзя изменять, если размер окна минимизирован или максимизирован. Поэтому первоначально в процедуре свойством WindowState устанавливается обычный размер окна

Процедура изменяет размеры активного окна приложения

Рис. 8.1. Процедура изменяет размеры активного окна приложения

При помощи оператора присваивания можно сохранить значение свойства в переменной. Значение свойства может использоваться как часть условного выражения. В таких случаях говорят о возврате значения свойства.

Синтаксис оператора присваивания, возвращающего значение свойства

variable=object.property
  • variable - переменная или свойство некоторого объекта;
  • object - ссылка на объект, свойство которого запоминается или тестируется;
  • property - название свойства, значение которого необходимо получить.

Важно

  • Тип переменной должен соответствовать типу значения свойства.

Примеры

  1. Распечатать название рабочего листа c активной ячейкой.

    Свойство Parent возвращает рабочий лист, на котором расположена активная ячейка.

    Процедура распечатки названия рабочего листа c активной ячейкой

    Рис. 8.2. Процедура распечатки названия рабочего листа c активной ячейкой
  2. В зависимости от знака числа, хранящегося в ячейке, залить ячейку некоторым цветом.

    В процедуре тестируется свойство Value объекта Range - ячейки A1. В случае отрицательного числа цвет заливки ячейки - синий.

    Процедура тестировния свойства Value объекта Range

    Рис. 8.3. Процедура тестировния свойства Value объекта Range
    При нулевом значении заливка ячейки отменяется (константа xlNone ). При положительном значении устанавливается цвет заливки, предусмотренный по умолчанию (константа xlAutomatic ).

Методы объектов

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

Важно

  • Методы - это функции или подпрограммы.
  • Подобно процедурам методы могут принимать аргументы.
  • Функции VBA и методы Application могут иметь одинаковые имена, но различные аргументы, например, функция InputBox класса Interaction и метод InputBox класса Application.

Синтаксис вызова метода без аргументов

object.method

например, ActiveCell.Justify.

Вызов метода с аргументами имеет две формы:

  • variable=object.method(arguments) - функциональная форма вызова (аргументы указываются в скобках после названия метода).
  • object.method arguments - операторная форма вызова (аргументы записываются через пробел после названия метода).

Если метод использует несколько аргументов, то они перечисляются через запятую.

Аргументы можно задавать, используя позиционное или произвольное расположение.

ЗАПОМНИТЕ

  • Функциональная форма вызова метода используется, если необходимо сохранять значение, возвращаемое методом.
  • Операторная форма вызова метода используется, если не нужно сохранять возвращаемое методом значение.

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

Модель объектов

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

Модель объектов MS Excel (фрагмент)

увеличить изображение
Рис. 8.4. Модель объектов MS Excel (фрагмент)

Нажатие на выбранный объект отображает на экране статью, посвященную объекту, в которой ниже имени объекта, как правило, расположены три гиперссылки, позволяющие просмотреть свойства ( Properties ), методы ( Methods ) и события ( Events ) выбранного объекта с соответствующими примерами. В дополнение можно раскрыть список рекомендуемых для просмотра объектов ( See Also ). Нажатие на Multiple objects показывает перечень исходных объектов или перечень вложенных объектов.

Фрагмент статьи, посвященной объекту Workbook

Рис. 8.5. Фрагмент статьи, посвященной объекту Workbook

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

Модель объектов содержит простые объекты и коллекции объектов. Коллекция объектов ( Collection ) объединяет группу подобных объектов.

Коллекции объектов

Коллекция объектов - это объект специального типа, существующий для управления объектами группы. Например, Workbooks является коллекцией всех открытых книг - объектов Workbook, а Worksheets - коллекцией рабочих листов некоторой рабочей книги - объектов Worksheet. Примерно половина всех объектов MS Excel - это коллекции объектов.

Процедуры могут обращаться как к отдельному элементу коллекции (к объекту Workbook или к объекту Worksheet ), так и ко всем объектам коллекции одновременно (к объекту Workbooks или к объекту Worksheets ). Коллекция объектов и объекты этой коллекции обладают различными свойствами и методами.

Коллекция объектов - это упорядоченная совокупность объектов. Для доступа к конкретному объекту в коллекции можно использовать его имя или порядковый номер в коллекции, например, Workbooks(1) указывает на первую рабочую книгу. Запись Worksheets("Sheet2") указывает на лист с именем Sheet2.

< Лекция 7 || Лекция 8: 12345
Дмитрий Денисов
Дмитрий Денисов

Еще раз повторяю вопрос  - отправил договор и сканы документов по почте - в начале августа, до  5 го, внес предоплату - летом действовала скидка - чтобы пройти курс в августе, но я уезжал в Москву. По возвращению - и  в течение месяца - никакого ответа, никаких зачислений, ничего. Как проверить, пришли ли мои документы в Интуит, предоплата, почему нет зачисления.

Дмитрий Денисов
Дмитрий Денисов

Как записаться на курс, оплатить, не ориентируюсь в программе.

Ранее у Вас учился.

Работаю преподавателем, есть справка. Как получить скидку, т.е. оплата 2000


 

Елизавета Cафронова
Елизавета Cафронова
Россия, Выкса, НИТУ МИССиС
Иван Чуприков
Иван Чуприков
Россия, пгт. Чульман