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

Объекты MS Excel

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

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

Ссылка на объект коллекции - это название коллекции, после которого в скобках указывается индекс объекта или его имя в кавычках. Например, ссылка Workbooks(1) выбирает первую из открытых рабочих книг, а Workbooks("budget") ссылается на рабочую книгу с именем "budget".

Важно

  • Количество элементов коллекции заранее не фиксируется.
  • Новый элемент может быть добавлен в произвольное место коллекции.
  • Элементы коллекции перенумеровываются при удалении или добавлении элементов в коллекцию.
  • Различные коллекции объектов имеют общие методы и свойства, но параметры вызова методов могут различаться.

Объекты Workbooks и Workbook

Документ MS Excel (рабочая книга) это объект Workbook. Можно одновременно работать с несколькими рабочими книгами. Открытые рабочие книги составляют коллекцию рабочих книг - Workbooks.

Свойство Workbooks объекта Application возвращает объект Workbooks.

При открытии или создании рабочей книги элемент Workbook автоматически добавляется в конец коллекции Workbooks, а при закрытии книги соответствующий элемент также автоматически удаляется из коллекции.

Некоторые свойства и методы объектов Workbooks и Workbook
Свойства и методы Примеры операторов и комментарии
Объект Workbooks
Свойство Count (R/O Long) MsgBox "Число открытых рабочих книг " & Workbooks.Count высвечивает число рабочих книг в коллекции
Метод Add Workbooks.Add добавляет новую рабочую книгу в коллекцию
Метод Close Workbooks.Close используется без аргументов и закрывает все рабочие книги
Объект Workbook
Свойство Colors Свойство, заданное с индексом, указывает на конкретный элемент палитры. ActiveWorkbook.Colors(5) = RGB(255,0,0) заменяет пятый цвет палитры на красный
Свойство без индекса возвращает палитру цветов в виде массива из 56 цветов.

ActiveWorkbook.Colors = Workbooks("AIR.XLS").Colors заменяет палитру активной книги на палитру цветов книги AIR.XLS.

Свойство Name (R/O String) MsgBox Workbooks(Workbooks.Count).Name высвечивает имя последней открытой книги
Свойство FullName (R/O String) MsgBox ActiveWorkbook.FullName возвращает полное имя активной рабочей книги, включая путь к ней
Свойство Sheets ThisWorkbook.Sheets.Count возвращает количество элементов в коллекции листов различных типов рабочей книги, содержащей выполняемый код
Свойство Charts ActiveWorkbook.Charts(1).Name возвращает имя первого листа в коллекции диаграммных листов активной книги
Свойство Worksheets Workbooks(1).Worksheets(1).Activate активизирует первый лист из коллекции рабочих листов
Метод Open Workbooks.Open "AIR.xls" открывает существующую рабочую книгу AIR.xls
Метод Close ActiveWorkbook.Close SaveChanges:=True, Filename="AIR" закрывает рабочую книгу. Книга удаляется из коллекции, и элементы коллекции Workbooks перенумеровываются.

Параметр SaveChanges сохраняет или отменяет сделанные изменения. Параметр Filename задает название новой рабочей книги

Метод Activate Workbooks("AIR.XLS").Activate активизирует указанную рабочую книгу
Метод SaveAs ActiveWorkbook.SaveAs FileName:="d:\bel_acc\first_book" сохраняет рабочую книгу под именем Filename. Если в Filename папка не указана, то файл сохраняется в текущей папке
Событийные процедуры

Событийные процедуры записываются на процедурном листе, связанном с объектом. Каждый объект имеет свои собственные события.

Чтобы вставить событийную процедуру для объекта Workbook

  • выделите объект ThisWorkbook (Эта книга) в окне проекта;
  • перейдите на лист процедур, нажав клавишу F7. Можно выполнить команду View Code или сделать двойной щелчок на объект ThisWorkbook ;
  • на процедурном листе в окне выбора объектов (вверху слева) выберите объект Workbook ;
  • в окне выбора событий (вверху справа) выберите событие. Автоматически вставляется процедура со стандартным именем, которое состоит из названия объекта и названия события, разделенных нижним подчеркиванием (_), например, для события Open событийная процедура имеет имя Workbook_Open ;
  • запишите текст процедуры.

Пример

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


При выборе события NewSheet автоматически появляется новая процедура Workbook_NewSheet с параметром Sh.

Значение параметра, являющееся ссылкой на объект - новый лист, передается процедуре во время ее выполнения. Метод Move перемещает вставленный лист. Параметр before этого метода определяет новое месторасположение листа - начало рабочей книги.

Объекты Sheets, WorkSheets и WorkSheet

Коллекция Sheets представляет собой совокупность листов различных типов - рабочих листов (коллекция Worksheets ) и листов диаграмм (коллекция Charts ). Таким образом, каждый элемент коллекции Sheets является элементом коллекции WorkSheets или коллекции Charts и наоборот, любой элемент коллекции WorkSheets или коллекции Charts принадлежит коллекции Sheets.

Некоторые свойства и методы объектов Sheets, WorkSheets и WorkSheet
Свойства и методы Примеры и комментарии
Объекты Sheets, WorkSheets
Свойство Count (R/O Long) MsgBox "Количество рабочих листов в активной книге " & ActiveWorkbook.WorkSheets.Count высвечивает количество рабочих листов в рабочей книге
Метод Add Sheets.Add, WorkSheets.Add добавляет новый лист заданного типа в рабочую книгу
Объекты Sheets, WorkSheets, Sheet, WorkSheet
Методы Copy, Move Копирует, перемещает указанные листы или группу листов в новое место. Worksheets(1).Move after:=Worksheets(Worksheets.Count) перемещает первый лист в конец рабочей книги
Объекты Sheet, WorkSheet
Метод Activate WorkSheets("January").Activate активизирует указанный рабочий лист
Метод Delete ActiveWorkbook.Worksheets(1).Delete удаляет первый рабочий лист
Свойство Name (R/W String) Возвращает или устанавливает имя листа. WorkSheets(WorkSheets.Count).Name ="LastSheet" переименовывает последний рабочий лист
Объекты WorkSheet
Свойство Columns (R/O) Возвращает коллекцию столбцов. Worksheets(1).Columns(1).Font.Bold = True устанавливает полужирный шрифт для первой колонки первого рабочего листа
Свойство ScrollArea (R/W String) Определяет границы интервала, внутри которого возможно перемещение по ячейкам. При установке значения "пустая строка" доступны все ячейки рабочего листа. Worksheets(1).ScrollArea = "A1:F10" разрешает доступ только к ячейкам A1:F10
Свойство Shapes (R/O) Возвращает коллекцию Shapes - коллекцию графических объектов рабочего листа: рисунки, автофигуры и т.д. ActiveSheet.Shapes(1).AutoShapeType = 21 меняет тип первого графического объекта активного листа на "сердечко"
Свойство Rows(R/O) Возвращает коллекцию строк. Worksheets("Sheet1").Rows(3).Delete удаляет третью строку
Метод Calculate ActiveWorksheet.Calculate производит вычисления во всех ячейках указанного рабочего листа
Метод CheckSpelling Используется для проверки правописания (с аргуменами и без аргументов). ActiveSheet.CheckSpelling ignoreUppercase:= True не проверяет слова, записанные только прописными буквами
Методы
Метод Add

Добавляет новый лист в коллекцию Sheets, WorkSheets. При создании рабочей книги коллекция WorkSheets содержит столько рабочих листов, сколько определено свойством SheetsInNewWorkbook объекта Application.

Внимание

  • Метод Add для объектов Workbooks и Sheets имеет различный синтаксис.

Cинтаксис метода для коллекций Sheets, WorkSheets

expression.Add([Before] [,After] [,Count] [,Type])
  • expression - выражение, возвращающее коллекцию WorkSheets или Sheets. Указание обязательно;
  • Before 1Возможно задание только одного из двух параметров Before или After - специфицирует лист, перед которым вставляется новый лист;
  • After 2Возможно задание только одного из двух параметров Before или After - специфицирует лист, после которого вставляется новый лист;
  • Count - количество вставляемых листов;
  • Type - тип вставляемого листа. Используются константы: xlWorksheet (по умолчанию), xlChart (только для объекта Sheets ), xlExcel4MacroSheet, xlExcel4IntlMacroSheet.

Важно

  • При отсутствии всех параметров один рабочий лист добавляется перед активным листом.
  • При задании параметров Before и After указывается ссылка на лист как индекс или имя в коллекции листов, например, Sheets(1) или Sheets("Лист1")
Методы Move и Select

Метод Move используется для перемещения листов.

Синтаксис expression.Move([Before] [,After])

  • expression - ссылка на объект, представляющий перемещаемый лист. Указание обязательно;
  • необязательные параметры before и after (ссылки на лист, см. описание метода Add ) определяют новое местоположение перемещаемого листа. Если не указан ни один из параметров, то лист перемещается во вновь создаваемую рабочую книгу.

Метод Select выделяет объект. При применении к одному листу методы Activate и Select активизируют указанный лист. Но метод Select используется для группировки листов, т.е. для расширения выделения.

Синтаксис expression.Select([Replace])

  • expression - ссылка на объект, представляющий выделяемый лист. Указание обязательно;
  • Replace - для расширения выделения аргумент устанавливается в False. Если аргумент не задан или принимает значение True, то вместо старой области выделения создается новая область выделения. Необязательный параметр.

Замечание

  • Для выделения листов с конкретными именами используйте функцию Array. Например, Sheets(Array("Лист8", "Лист12")).Select.

Пример

Процедура перемещает нечетные листы в конец рабочей книги. В цикле выделяются нечетные листы.


Событийные процедуры

Чтобы вставить событийную процедуру для объекта WorkSheet:

  • выделите объект WorkSheet (например, Лист1 ) в окне проекта;
  • перейдите на лист процедур этого объекта;
  • на процедурном листе в окне объектов (вверху слева) выберите объект WorkSheet ;
  • в окне выбора событий (вверху справа) выберите событие;
  • запишите текст процедуры.

При выборе события автоматически вставляется процедура со стандартным именем, которое состоит из названия листа и названия события, разделенных нижним подчеркиванием (_).

Пример

При активизации листа Лист1 в ячейку A1 заноситcя название листа.

Пример работы с событийной процедурой объекта WorkSheet

Рис. 8.8. Пример работы с событийной процедурой объекта WorkSheet

Объект Range

При работе в MS Excel чаще всего выполняются некоторые действия с группой ячеек рабочего листа. Объект Range - это отдельная ячейка, целиком строка или столбец рабочего листа, выделенный интервал ячеек, непрерывный интервал ячеек или интервал несмежных ячеек.

Для задания объекта Range существуют различные возможности. Например, благодаря свойству ActiveCell, активная ячейка представляется в качестве объекта Range. Свойство Selection определяет выделенный интервал ячеек в качестве объекта Range.

Свойства и методы, возвращающие объект Range
Свойства и методы Применимы к объектам Примеры и комментарии
Свойство ActiveCell Application Оператор ActiveCell.Value=10 устанавливает значение активной ячейки равным 10
Свойство Areas Range Оператор Range("A1, B5:B10, C12:C20").Areas(3).Value = 10 устанавливает значение 10 для третьей области объекта Range - для ячеек интервала C12:C20
Свойство Cells Application, Range, Worksheet Оператор Cells(7,3).Select активизирует ячейку C7 и равносилен оператору Range("C7").Select
Свойство Columns Application, Range, Worksheet Оператор Columns("A:D").Select выделяет первые четыре столбца
Свойство CurrentRegion Range Оператор ActiveCell.CurrentRegion.Count подсчитывает количество ячеек с данными в интервале, окружающем активную ячейку
Свойство Offset Range Операторы Range ("A2:B10").Select, Selection.Offset(2,2).Value=10 устанавливают значение 10 каждой ячейки интервала C4:D12.

Равносильно записи Range("C4:D12").Value=10

Свойство Range Application, Range, Worksheet Операторы p=Range("A:B").Count, p=Range("налог").Count, p=ActiveSheet.Range("A1:A10").Count, p=Range("1:3").Count, p=Range("A1:C2, B10:D24").Count присваивают переменной p количество ячеек в заданных интервалах
Свойство Rows Application, Range, Worksheet Оператор Rows("1:3").Select выделяет первые три строки
Свойство Selection Application Оператор Selection.Clear очищает выделенный интервал ячеек
Метод Union Range Union(Range("A1:C5"), Range("B10:D12") объединяет два несмежных интервала в один объект Range

ЗАМЕЧАНИЯ

  • Все перечисленные свойства возвращают объект Range, не активизируя новую ячейку.
  • Ячейка остается активной до тех пор, пока методы Activate или Select не активизируют новую ячейку.
< Лекция 7 || Лекция 8: 12345
Дмитрий Денисов
Дмитрий Денисов

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

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

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

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

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


 

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