Объект Worksheet и коллекции Sheets и Worksheets
Каждая рабочая книга состоит из листов. Совокупность всех листов рабочей книги задается коллекцией Sheets. Основных типов листов в рабочей книге два – Worksheet и Chart, соответственно имеются две коллекции для каждого типа листов. На практике для этих коллекций чаще всего используется метод Add, добавляющий новый лист в книгу. Метод возвращает соответствующий объект в качестве результата. Добавленный лист становится активным. Свойство Count у всех коллекций показывает количество элементов 15 коллекции. Для Sheets оно равно количеству листов. Так, например, можно добавить в активную книгу новый лист перед последним листом, назвав его "Новый":
Set NewSheet = Sheets.Add(before:=Sheets(Sheets.Count))
NewSheet.Name = "Новый"
Ссылка на добавленный лист сохранена в переменной NewSheet класса Worksheet, которую далее в программе можно использовать для работы с этим листом.
Основные свойства и методы объекта Worksheet приведены в табл. 12.25 и 12.26.
Основные события объекта Worksheet следующие: Activate, Calculate, Change, Deactivate, SelectionChange.
Таблица 12.25
Основные свойства объекта Worksheet
Свойство |
Описание |
Range |
Возвращает объект Range. Позволяет задать как отдельную ячейку, так и диапазоны ячеек. Свойство имеет параметры. Чаще всего в качестве значений параметра используются адрес ячейки, диапазон ячеек или выражение над диапазонами, содержащее операции объединения (запятая) и пересечения (пробел), например: ActiveSheet.Range(“A5"), ActiveSheet.Range(“A1:D25”), ActiveSheet.Range(“A1:D25, E1:F25“), ActiveSheet.Range(“A1:D25 B5:E28“) |
Cells |
Возвращает объект Range. Обычно свойство используется для указания конкретной ячейки с помощью ее номера строки и столбца. Например: ActiveSheet.Cells(5, 1) – это ячейка А5 активного листа |
Rows, Columns |
Возвращают коллекции, содержащие все строки и столбцы рабочего листа. Для доступа к конкретной строке или столбцу нужно указать его номер: ActiveSheet.Rows(l), ActiveSheet.Columns(2) |
Таблица 12.26
Основные методы объекта Worksheet
Метод |
Описание |
Activate |
Активизирует рабочий лист |
Delete |
Удаляет рабочий лист |
Copy |
Создает копию листа, помещая ее перед или после указанного в параметре (Before, After) листа: Worksheets("Лист1").Сору After:=Worksheets("Лист3") |
Move |
Перемещает рабочий лист в позицию, указанную параметром Before или After |
Paste |
Помещает содержимое буфера обмена на рабочий лист. Позицию вставки можно указать с помощью параметра Destination |
Calculate |
Выполняет вычисления формул рабочего листа |
Объект Range
Это основной объект, с которым приходится работать программисту. Объект является коллекцией ячеек электронной таблицы, которая может содержать как единственную ячейку таблицы, так и столбец или строку, некоторую связную и не связную прямоугольную область, а также объединение и пересечение всех подобных элементов. Для создания объекта чаще всего используются свойства Range, Cells, Rows, Columns, рассмотренные выше. Основные свойства объекта приведены в табл. 12.27.
Таблица 12.27
Основные свойства объекта Range
Свойство |
Описание |
|
Value |
Значение ячейки. Если она пуста, то возвращается значение Empty (можно проверить, вызвав функцию IsEmpty). Если объект Range содержит более одной ячейки, то возвращается массив значений (можно проверить, вызвав функцию IsArray). Функции IsNumber,LsText позволяют определить тип значения, хранимого в ячейке. Это свойство по умолчанию, поэтому часто опускается. Например, вместо Range("Al"). Value = 2 можно написать Rangc("Al”) = 2 |
|
Text |
Возвращает строку текста, связанного с ячейкой. Имеет статус только для чтения |
|
Formula |
Формула в формате А1. Если формула присваивается диапазону, то относительные ссылки ведут себя как обычно. Например: Range("A2:A5").Formula = "=А1+$С$1“ В ячейке А5 формула будет иметь вид -A4+SCS1. При считывании значения свойства возвращается текстовая строка (как в строке формул) |
|
FormulaLocal |
Формула в формате А1 с учетом языка пользователя (для неанглоязычных версий Excel). Например: Range("B5“).FormulaLocal = "=ПИ()" |
|
FormulaR1C1 |
Формула в формате R1С1. Например: Range(“B1").FormulaRICl ="=R1C1+1" |
|
FormulaR1C1Local |
Формула в формате R1C1 с учетом языка пользователя (для неанглоязычных версий Excel) |
|
CurrentRegion |
Возвращает объект Range, в состав которого входит заданный диапазон. Границами возвращаемого объекта являются пустые строки и столбцы или границы таблицы. Например, так можно выделить диапазон, содержащий ячейку A2: Range("A2“). CurrentRegion.Select |
|
Address |
Возвращает строку, задающую ссылку на объект Range. Вид возвращаемого значения определяют параметры свойства |
|
Column, Row |
Возвращают соответственно номер первого столбца или первой строки объекта Range |
|
Font |
Возвращает объект Font (шрифт). Например: With Worksheets(nHncTl ").Range(”B5").Font .Size = 14 .Bold = True .Italic = True End With |
|
Если при записи макроса вы будете вставлять в ячейку какую-либо формулу, то Excel в тексте, скорее всего, использует свойство FormulaRlCl и вставленная формула покажется вам непонятной. Дело в том, что для ссылок на ячейки в Excel используются два стиля: А1 и R1C1. Обычно вы работаете со ссылками в стиле А1: ссылка состоит из имени столбца (обозначаются латинскими буквами) и номера строки. Признаком абсолютной ссылки является знак доллара перед именем строки или столбца. Макросы используют стиль R1C1. В этом случае после буквы R указывается номер строки ячейки, после буквы С – номер столбца. Для задания относительной ссылки в стиле R1C1 указывается смещение по отношению к активной ячейке (в квадратных скобках). Знак определяет направление смещения. Например, R[-1]C (относительная ссылка на ячейку, расположенную в предыдущей строке и в том же столбце), R[3]C[2] (относительная ссылка на ячейку, расположенную на три строки ниже и на два столбца правее), R2C2 (абсолютная ссылка на ячейку, расположенную во второй строке и во втором столбце), R[–1 ] (относительная ссылка на предыдущую строку), R (абсолютная ссылка на текущую строку).
Объект Range имеет около 80 методов. Все, что вы можете сделать с диапазоном ячеек в Excel, скорее всего реализовано с помощью метода объекта Range. Например, сортировка – это метод Sort, заполнение диапазона – метод AutoFill, выделение диапазона – метод Select и т.д. Большинство методов имеют параметры. Для изучения методов рекомендуется записать макрос, выполняющий нужную команду, и проанализировать полученный код. Описание методов можно найти в справочной системе MS Excel. Воспользуйтесь контекстной справкой (клавиша F1) или в редакторе Visual Basic откройте окно справки, в строке поиска наберите "Range Object Members" и перейдите по найденной гиперссылке.
Объект Selection
В MS Excel нет класса объектов Selection. В программе объект Selection мы получаем либо в результате работы метода Select, либо при вызове свойства Selection. Тип объекта может быть различным. Свойства и методы объекта Selection определяются типом выделенного объекта. Чаще всего объект Selection принадлежит классу Range, и тогда при работе с ним можно использовать все свойства и методы объектов класса Range.