Национальный исследовательский университет "Высшая Школа Экономики"
Опубликован: 01.04.2010 | Доступ: свободный | Студентов: 4318 / 888 | Оценка: 4.45 / 4.06 | Длительность: 08:48:00
ISBN: 978-5-9556-0119-9
Специальности: Программист
Лекция 8:

Объекты MS Excel

< Лекция 7 || Лекция 8: 12345

Обращение к объекту

Контейнеры

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

Самый старший контейнер объектов MS Excel - это приложение Application. Приложение - это контейнер для всех открытых рабочих книг, и в то же время приложение содержит такой глобальный объект, как строка меню, который доступен любой рабочей книге. Рабочий лист представляет пример того, что объект может быть частью нескольких контейнеров или коллекций одновременно: он входит в рабочую книгу, с одной стороны, а с другой стороны - является частью коллекции Sheets и коллекции Worksheets.

Преимущества

  • Рассмотрение объекта в качестве контейнера позволяет уточнить, сославшись на контейнер, с каким именно объектом производится действие в процедуре.

Если в рабочей книге имеются два рабочих листа Sheet1 и Sheet2, то запись Worksheets("Sheet1").Range("A1") указывает на ячейку A1 рабочего листа Sheet1, а запись Worksheets("Sheet2").Range("A1") указывает на ячейку A1 рабочего листа Sheet2.

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

Объект в VBA указывается при помощи ссылки. Запись Workbooks("cross").Worksheets("Sheet2") указывает на объект, являющийся листом с именем Sheet2 в рабочей книге cross, отличая его, таким образом, от листа с тем же именем, но в другой рабочей книге.

Важно

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

Для объектов, относящихся к классу globals (например, активная рабочая книга, активная ячейка рабочего листа, константа), спецификатор Application можно опустить.

Оператор With

В VBA перед обращением к каждому из методов или свойств объекта требуется наличие ссылки на объект. Конструкция With…End With позволяет применить последовательность операторов к объекту, указав его имя только один раз в операторе With. Благодаря этому программа становится менее громоздкой, освобождаясь от повторений ссылки на объект.

Синтаксис оператора

With Object
[statements]
End With
  • Object - имя объекта;
  • statements - последовательность операторов.

Первая строка этой структуры идентифицирует объект, с которым будут производиться действия. В последующих операторах используются свойства и методы идентифицированного объекта. Оператор End With является закрывающей скобкой для оператора With. Часто подобная структура записывается при помощи макрорекордера.

Внимание

  • Каждый оператор внутри блока statements начинается с точки.

Использование объектных переменных

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

Например, установить полужирный шрифт для первой строки активного листа можно оператором ActiveSheet.Rows(1).Font.Bold = True или, используя объектную переменную, можно предложить два способа записи:



Здесь оператор Set создает объект, тип которого установлен при описании объектной переменной. Далее можно обратиться к свойствам или методам созданного объекта. В первом случае это объект типа Range, во втором случае - тип объекта Font.

Преимущества

  • Использование объектных переменных улучшает читабельность программы.
  • Использование объектных переменных уменьшает время выполнения программы, т.к. при каждом выполнении оператора для обращения к объекту не придется проходить полную цепочку иерархии объектов.

Объект Application

При открытии MS Excel автоматически становится доступным объект Application с его свойствами и методами. Объект Application - корневой объект приложения. В него вложены остальные объекты приложения. Доступ к ним осуществляется посредством свойств-участников объекта Application.

Для создания ссылки на объект Application используется свойство Application.

Примеры операторов
Application.Windows("AIR.XLS ").Activate Оператор активизирует рабочую книгу
Application.Goto Range("B3:C5") Оператор выделяет интервал ячеек на активном рабочем листе

Многие свойства объекта Application используются без ссылки на объект Application, так как они возвращают объекты, относящиеся к классу globals.

Активные объекты

Свойства, название которых начинается со слова Active, возвращают активный объект соответствующего типа. Для этих свойств необязательно указывать ссылку на объект Application, так как они входят в класс globals. Некоторые из этих свойств являются одновременно свойствами нескольких объектов.

Свойства, возвращающие активный или выделенный объект
Свойство Объект Действие Возвращаемый объект
ActiveCell Application, Window Возвращает активную ячейку Range
ActiveSheet Application, Window, Workbook Возвращает активный лист. Это может быть рабочий лист, лист диаграмм Sheet
ActiveWorkbook Application Возвращает активную рабочую книгу Workbook
ActiveWindow Application Возвращает активное окно Window
Selection Application, Window Возвращает выделенный объект Различные типы объектов

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

Примеры
Оператор Комментарий
ActiveCell.Font.Bold=True Устанавливает полужирный шрифт текста активной ячейки
ActiveSheet.Name="Проба" Изменяет название активного листа рабочей книги
MsgBox ActiveWorkbook.Fullname Высвечивает полное имя рабочей книги, включая путь и имя файла
Selection.NumberFormat="0.00" Устанавливает числовой формат с двумя знаками после запятой для ячеек выделенного интервала
ActiveCell.Value=10

Application.ActiveCell.Value=10

ActiveWindow.ActiveCell.Value=10

Application.ActiveWindow.ActiveCell.Value=10

Присваивают активной ячейке значение 10. Приведенные примеры доступа к активной ячейке равносильны
Worksheets("Sheet1").Activate

Selection.Clear

Очищает предварительно выделенный на листе Sheet1 объект, например, интервал ячеек
Если никакой объект не выделен, то свойство Selection возвращает значение Nothing и очистка не выполняется
Worksheets("Sheet1").Activate

MsgBox "Тип объекта " & TypeName(Selection)

Высвечивает тип предварительно выделенного на листе Sheet1 объекта
< Лекция 7 || Лекция 8: 12345
Дмитрий Денисов
Дмитрий Денисов

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

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

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

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

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