Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
объектная модель Excel.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.45 Mб
Скачать

Примечание

Диапазон также как и рабочий лист, обладает свойством Cells, которое, если используется без параметров, возвращает множество всех ячеек, входящих в диапазон. Если же оно указывается с параметрами, то возвращает конкретную ячейку из диапазона. Например, в следующем примере значение 2 вводится в ячейку СЗ:

Range("В2:D4").Select

Selection.Cells(2, 2).Value = 2

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

Range("Отчет")

Если имеются две ячейки, именованные FirstCell и LastCell, то минимальный прямоугольный диапазон, содержащий эти ячейки, может быть описан следующим образом:

Range(Range("FirstCell"), Range("LastCell"))

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

[В1]

[А1:С5]

[А1:А10,С1:С10]

[Продажи]

Ссылка на диапазон неактивного рабочего листа производится так:

Worksheets("Май").Range("Отчет") Worksheets("Май").Range("А1")

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

Объект Range позволяет сочетать гибкость VBA и мощь рабочего листа. Огромное число встроенных функций рабочего листа существенно упрощают и делают более наглядным программирование на VBA. Свойства объекта Range позволяют управлять им от внешнего вида до автоматизации вычислений. В последующих разделах на содержательных примерах досконально разобраны следующие свойства этого объекта.

Address

AllowEdit

Areas

Borders

Cells

Characters

Column

Columns

ColumnWidth

Comment

Count

CurrentRegion

End

EntireColumn

EntireRow

Font

Formula

FormulaArray

FormulaHidden

FormulaLocal

FormulaR1C1

FormulaRlClLocal

HasFormula

Height

Hidden

HorizontalAlignment

Hyperlinks

Interior

Left

Locked

Name

NumberFormat

Offset

Orientation

Resize

Row

RowHeight

Rows

ShrinkToFit

Top

UseStandardHeight

UseStandardWidth

Value

VerticalAlignment

Width

Worksheet

WrapText

Ввод или считывание значения из диапазона

Свойство Value объекта Range возвращает или устанавливает значение в ячейках диапазона. В первой инструкции приведенного далее примера переменной х присваивается значение из ячейки С1, во второй — в ячейку СЗ вводится строка "Отчет", а в третьей — в каждую из ячеек диапазона А1:В2 вводится 1.

х = Range("CI").Value

Range("СЗ").Value = "Отчет"

Range("A1:B2").Value = 1

Поиск по шаблону подобных значений в диапазоне

Последовательный перебор ячеек диапазона и сравнение с помощью оператора Like возвращаемых значений свойства Value с шаблоном позволяют реализовывать поиск подобных значений в диапазоне. Например, в следующем коде последовательно просматриваются все ячейки диапазона А1:А100. В тех из них, в которые входит значение ms, содержимое ячейки заменяется словом Microsoft, сама же ячейка заливается желтым цветом, в то время как все остальные ячейки — белым цветом.

Dim с As Range

For Each с In [A1:A100]

If с Value Like "*MS*" Then

c.Value = "Microsoft"

с.Interior.Color = RGB(255, 255, 0)

Else

c.Interior.Color = RGB(255, 255, 255)

End If

Next

Ввод или считывание формулы в ячейку в формате А1

Свойство Formula объекта Range возвращает или устанавливает формулу в диапазон в формате А1. Например, в следующем примере первая инструкция вводит в ячейку С1 формулу =$A$1+$B$1, а вторая — в ячейку С2 формулу =SIN(А2)^2.

Range("C1").Formula = "=$А$1+$В$1"

Range("C2").Formula = "=SIN(A2)A2"

Ввод или считывание формулы в ячейку в формате R1C1

Свойство FormulaR1C1 объекта Range возвращает формулу в формате R1C1. Например, следующая инструкция вводит в ячейку В1 формулу =2*R3C2 в R1C1-формате, или, что эквивалентно, формулу =2*$B$3 в формате А1.

Range("Bl").FormulaRlCl = "=2*R3C2"

Ввод или считывание формулы локальной версии в ячейку в формате А1

Свойство FormulaLocal объекта Range возвращает формулу локальной версии в формате А1. Например, следующая инструкция вводит в ячейку В2 формулу =сумм(c1: с4).

Range("В2").FormulaLocal = "=СУММ(C1:C4)"

Ввод или считывание формулы локальной версии в ячейку в формате R1C1

Свойство FormulaR1C1Local объекта Range возвращает формулу локальной версии в формате R1C1. Например, следующая инструкция вводит в ячейку В2 формулу =сумм(c1: с4) в формате R1C1.

Range ("B2") .FormuiaR1C1Local = "= СУММ(R1C3:R4C3)"

Ввод формулы массива в диапазон

Свойство FormulaArray объекта Range возвращает формулу диапазона в формате А1. В отличие от обыкновенной формулы рабочего листа, формула массива вводится на рабочем листе не нажатием клавиши <Enter>, а комбнацией клавиш <Ctrl>+<Shift>+<Enter>. Например, следующая инструкция вводит в диапазон Е1:ЕЗ формулу {=А1:АЗ*3}:

Range("E1:E3").FormulaArray = "=А1:АЗ*3"

Ввод формулы массива локальной версии в диапазон

При вводе формулы массива с функциями рабочего листа локальной версии формулу надо представить в формате R1C1, и вместо формулы локальной версии использовать формулу базовой версии. Например, следующая инструкция вводит в ячейку D1 формулу {=сумм($а$1:$в$1*3)}:

Range("D1").FormulaArray = "=SUM(R1C1:R1C2*3)"

Ввод формулы массива в диапазон с

относительными ссылками на ячейки

Для ввода формулы с относительными ссылками на ячейки необходимо использовать относительную адресацию в формате R1C1. Например, ввод формулы {=сумм(А1:В1*з) } в ячейку D1 производится следующей инструкцией:

Range("D1").FormulaArray = "=SUM(RC[-3]:RC[-1]*3)"

Определение адреса ячейки

Свойство Address объекта Range возвращает адрес диапазона.

Address[RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)

Здесь:

  • RowAbsolute — необязательный параметр, принимающий логические значения. Если значение параметра равно True или параметр опущен, то возвращается абсолютная ссылка на строку;

  • ColumnAbsoluteнеобязательный параметр, принимающий логические значения. Если его значение равно True или параметр опущен, то возвращается абсолютная ссылка на столбец;

  • ReferenceStyle — необязательный параметр. Допустимы два значения — xlA1 и xlR1C1, если xlA1 или xlR1C1 опущены, то возвращается ссылка в формате А1;

  • External — необязательный параметр, принимающий логические значения и определяющий, является ли ссылка внешней;

  • RelativeToнеобязательный параметр. В случае если значения параметров RowAbsolute и ColumnAbsolute равны False, a ReferenceStylexlR1C1, то данный параметр определяет начальную ячейку диапазона, относительно которой производится адресация.

Следующий код (листинг 5.40), обрабатывающий событие SelectionChange объекта Worksheet, демонстрирует возвращаемые свойством Address значения при различных установках его параметров.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

MsgBox Target.Address/) & vbCr & _

Target.Address(RowAbsolute:=False) & vbCr & _

Target.Address(ReferenceStyle:=xlRlCl) & vbCr & _

Target.Address(ReferenceStyle:=xlRlCl, RowAbsolute:=False, ColumnAbsolute:=False, RelativeTo—Worksheets(1).Cells(2, 2)) End Sub

Например, если на рабочем листе будет выбрана ячейка А1, то на экране отобразится окно со следующим сообщением:

$А$1

$А1

R1C1

R[-1]C[-1]