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

Объекты MS Excel

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

Свойства

Cвойство Range

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

Первый способ object.Range(Cell1)

Второй способ object.Range(Cell1 [,Cell2])

  • object - ссылка на объект, например, на рабочий лист или на интервал ячеек. Ссылка необязательна. По умолчанию используется активный лист;
  • Cell1, Cell2 - аргументы для задания интервала ячеек. Cell1 - указание обязательно при обоих способах записи свойства Range.

Первый способ

Аргумент Cell1 задает интервал ячеек произвольного размера.

Важно

  • Могут использоваться имена, определенные в таблице, или координаты ячеек, столбцов, строк или интервалов.
  • Координаты задаются в стиле A1.
  • Координаты и имена заключаются в кавычки.
  • При задании интервалов координаты левого верхнего угла и правого нижнего угла интервала разделяются двоеточием.
  • Для задания несмежных интервалов используется запятая.
  • Для задания пересечения интервалов используется пробел.
Примеры записи оператора Range (1 способ)
Запись Возвращаемый объект
ActiveSheet.Range("A1:A10") интервал ячеек A1:A10 на активном листе
Range("A:B") столбцы A:B
Range("налог") интервал с именем налог
Range("1:3") строки с первой по третью
Range("A1:C2, B10:D24") объединение двух несмежных интервалов A1:C2 и B10:D24
Range("A1:C10 B10:D24") пересечение двух интервалов A1:C10 и B10:D24, т.е. интервал B10:C10

Второй способ

Аргументы задают координаты интервала:

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

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

Примеры записи оператора Range (2 способ)
Запись Возвращаемый объект
Range("A5","D18") интервал A5:D18
Range(Columns(1), Columns(5)) интервал, содержащий первые пять столбцов рабочего листа

ЗАПОМНИТЕ

  • Если свойство Range применяется к объекту Range, то ссылка на интервал ячеек считается относительной и возвращается смещенный объект Range.

Например, если выделен интервал C1:D5, то запись Selection.Range("B2") возвратит ячейку D2.

Свойство Cells

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

Синтаксис object.Cells (RowIndex,ColumnIndex)

  • object - ссылка на объект. Ссылка необязательна. По умолчанию используется активный лист;
  • RowIndex - индекс строки;
  • ColumnIndex - индекс столбца.

ЗАМЕЧАНИЯ

  • В свойстве Cells индекс строки является первым аргументом, а индекс столбца - вторым аргументом, тогда как при задании адреса ячейки в стиле A1 сначала указывается столбец, а затем строка.
  • Понятие "индекс" ( Index, ColumnIndex, RowIndex ) всегда подразумевает целое число, целочисленную переменную или выражение, результат вычисления которого есть целое число или может быть преобразован в целое число.
Примеры записи свойства Cells
Запись Комментарий Возвращаемый объект
ActiveSheet.Cells Свойство Cells без аргументов все ячейки активного рабочего листа
Range("C5:C10").Cells(1,1) Свойство Cells применяется к объекту Range (относительная ссылка) ячейка C5
Range(Cells(7,3),Cells(10,4)) Свойство Cells используется в качестве аргументов свойства Range интервал ячеек C7:D10
Свойство Offset

Свойство Offset позволяет задавать ячейки или интервалы при помощи числа строк и колонок, которые отделяют нужную ячейку от исходной ячейки, т.е. указывая смещение относительно выбранной ячейки. Например, Range("A5").Offset(-2,1) возвращает ячейку B3.

Синтаксис object.Offset([RowOffset][,ColumnOffset])

  • object - ссылка на объект Range. Ссылка обязательна и определяет объект, относительно которого задается смещение;
  • RowOffset - смещение строки искомой ячейки относительно исходной ячейки;
  • ColumnOffset - смещение столбца искомой ячейки относительно исходной ячейки.

Необязательные аргументы RowOffset и ColumnOffset - числовые выражения. Если какой-то аргумент не задан, то соответствующее смещение равно нулю.

Например, если выделен интервал C1:D5, то запись Selection.Offset(2,1).Select выделяет интервал D3:E7.

Метод Union и свойство Areas

Метод Union используется для объединения двух и более объектов Range, заданных ссылками на непересекающиеся интервалы, в один объект Range.

Синтаксис Object.Union (arg1,arg2,...)

  • object - всегда объект Application. Ссылка необязательна;
  • arg1,arg2 - интервалы ячеек. Количество аргументов произвольно. Обязательно наличие хотя бы двух аргументов.

Например, оператор Union(Range("A1:C5"),Range("B10:D12")).Select выделяет несмежные интервалы A1:C5 и B10:D12.

Свойство Areas выполняет обратное действие, разделяя объединенные интервалы на несколько объектов Range.

Синтаксис Object.Areas(index)

  • object - ссылка на объект Range, состоящий из нескольких интервалов;
  • index - номер интервала в объекте. Аргумент необязателен.
Примеры
Оператор Комментарий Результат
p=Union (Range("A1:C5"), Range("B10:D12")).Areas(2).Count Если аргумент задан, то свойство Areas возвращает интервал - объект Range, определенный индексом интервала равен девяти, так как во втором интервале ровно 9 ячеек
p=Union(Range("A1:C5"), Range("B10:D12")).Areas.Count Cвойство Areas без аргументов рассматривает каждый из несмежных интервалов как элемент коллекции объектов Range равен двум, так как объект, определенный методом Union, состоит из двух областей - коллекции из двух элементов
p=Range("B10:D12").Areas.Count равен единице, так как объект Range представляет один элемент коллекции
Свойства Column и Row (R/O Integer)

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

object.Column 
object Row
  • object - обязательная ссылка на объект Range.

Например, запись Range("C5").Column возвращает число 3, а запись Range("C5").Row возвращает число 5.

Свойства Columns и Rows

Свойство Columns (не путайте со свойством Column!) возвращает объект Range, представляющий колонку или коллекцию колонок в объекте, к которому это свойство было применено.

Синтаксис Object.Columns(index)

  • object - ссылка на объект. Указание необязательно, по умолчанию используется активный рабочий лист;
  • index - индекс колонки в объекте.

Например, запись Columns(1) возвращает колонку A активного рабочего листа, а запись Range("C1:D5").Columns(1) возвращает колонку C заданного интервала, а именно, ячейки C1:C5.

Важно

  • Если не указан индекс колонки, то возвращаются все колонки объекта в виде объекта Range.
  • Индекс колонки можно указывать числом или буквой, при этом буква заключается в кавычки. Ссылки Columns(2) и Columns("B") указывают на одну и ту же колонку B.

Свойство Rows (не путайте со свойством Row!) возвращает объект Range, представляющий строку или коллекцию строк в объекте, к которому это свойство было применено.

Синтаксис Object.Rows(index)

  • object - ссылка на объект. Указание необязательно, по умолчанию используется активный рабочий лист;
  • index - индекс строки в объекте.

Важно

  • Если не указан номер строки, то возвращаются все строки объекта в виде объекта Range.

Например, оператор nr=Selection.Rows(Selection.Rows.Count).Row позволяет получить номер последней строки в выделенном интервале ячеек.

Свойство CurrentRegion

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

Пример

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

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

Пример работы со свойством CurrentRegion

Рис. 8.9. Пример работы со свойством CurrentRegion
Cвойства, связанные с шириной и высотой ячейки
Свойства Примеры и комментарии
ColumnWidth (R/W Variant) Возвращает или изменяет ширину колонки в единицах, эквивалентных одному символу в стиле Обычный ( Normal ). Шрифт стиля по умолчанию Arial Cyr и размер шрифта 10.

Range("A1").ColumnWidth=15 устанавливает ширину колонки A в 15 символов

Width (R/O Variant) Возвращает ширину интервала ячеек в пунктах.

Range("A1").Width возвращает значение 93.75, если ширина колонки 15 символов, шрифт Times New Roman, размер шрифта 12 пунктов (72 пункта равны 1 дюйму или приблизительно 2,54 см).

Debug.Print Range("A1:C3").ColumnWidth распечатает значение 8.43, а оператор Debug.Print Range("A1:C3").Width распечатает значение 144, если для колонок установлена стандартная ширина, шрифт Arial Cyr и размер шрифта 10

RowHeight (R/W Variant) Возвращает или изменяет высоту строк интервала в пунктах.

ActiveCell.RowHeight = 14 устанавливает высоту строки, в которой находится активная ячейка, в 14 пунктов

Height (R/O Variant) Возвращает суммарную высоту интервала строк, зависящую от названия и размера шрифта. Если шрифт Arial Cyr и размер шрифта 10, то Debug.Print Range("A1").Height распечатает 12,75 и Debug.Print Range("A1:C3").Height распечатает 38,25
WrapText (R/W Boolean) Range("A1").WrapText=True

Значение True разбивает текст ячейки на несколько строк, если ширина столбца недостаточна для размещения текста целиком

Замечание

  • Свойства Width и Height имеют статус Read-Only для объектов Range, но для других объектов, например, для объекта Window, они имеют статус Read-Write.

Методы

Методы Select и Activate

Метод Select выделяет интервал ячеек.

Синтаксис object.Select(Replace)

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

Метод Activate активизирует единственную ячейку.

Синтаксис object.Activate

  • object - активизируемая ячейка. Ссылка на объект обязательна.
Примеры
Оператор Активная ячейка
Range("C7:E9").Select C7
Range("C7:E9").Offset(1,1).Activate D8
Range("C7:E9").Activate C7
Range("C7:E9").Cells(2,1).Activate C8

ЗАМЕЧАНИЯ

  • Активная ячейка выделяется фоном среди всех выделенных ячеек.
  • Метод Select выделяет интервал ячеек, тогда как метод Activate активизирует только одну ячейку.
  • При использовании метода Select первая ячейка интервала становится активной.
  • Если выделена только одна ячейка, то она является активной и свойства ActiveCell и Selection возвращают одну и ту же ячейку (объект Range ).
Метод Clear

Очищает интервал ячеек, изменяя, таким образом, свойство Value каждой ячейки интервала.

Пример

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

Пример применения метода Clear

Рис. 8.10. Пример применения метода Clear

Название шрифта является обязательным параметром вызываемой процедуры, а размер шрифта - необязательным параметром. Если он не задан, то размер шрифта принудительно меняется на 16.

Вызывающая процедура проверяет, является ли интервал ячеек A1:B5 пустым. Если это не так, то интервал очищается и размер шрифта устанавливается в 16. Если же интервал ячеек пуст, то все ячейки интервала заполняются единицами и размер шрифта интервала ячеек равен 10.

В обоих случаях шрифт ячеек интервала A1:B5 устанавливается в Times New Roman.

Цветовое оформление объекта Range

Свойство ColorIndex

Свойство ColorIndex заливки (заливка - это объект Interior, который является вложенным для объекта Range ) рассматривает цвет как номер в палитре цветов рабочей книги. Всего в палитре 56 цветов.

Пример

В ячейках, начиная с активной, отображается палитра цветов рабочей книги.

Переменные c и r содержат, соответственно, индекс столбца и индекс строки активной ячейки.

Прямоугольный интервал из 56 ячеек (7 строк и 8 столбцов, начиная с активной ячейки) для отображения палитры задается переменной obj_range, содержащей ссылку на объект Range.

Свойство Pattern (образец заливки) задается константой xlSolid, позволяющей установить заливку активных ячеек.

Пример изменения свойства ColorIndex

увеличить изображение
Рис. 8.11. Пример изменения свойства ColorIndex
Свойство Color

Свойство относится к объектам Border, Font или Interior (вложенные объекты для объекта Range ) и устанавливает цвет объекта в формате RGB. Свойство можно задать, используя функцию RGB, которая возвращает цвет в виде числа типа Long. Аргументы функции Red, Green, Blue определяют насыщенность соответствующей компоненты в устанавливаемом цвете и изменяются от 0 до 255.

Например, оператор ActiveCell.Interior.Color=RGB(255, 0, 0) устанавливает красную заливку активной ячейки.

Замечание

  • Не путайте свойство Color со свойством Colors! Последнее является свойством объекта Workbook и использует палитру цветов рабочей книги как массив значений цветов, например, оператор ActiveWorkbook.Colors(51) = RGB(255,0,0) меняет 51 цвет палитры активной рабочей книги на красный.

Чтобы использовать серый цвет разной интенсивности, установите равные аргументы функции RGB, например, выражение RGB(196,196,196) устанавливает 25% серую заливку. Чем больше значения аргументов, тем ближе серый цвет к белому.

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

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

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

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

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

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