Содержание 1 введение 6

Вид материалаРеферат
11.9 Использование объекта Range
11.9.1 Использование свойств объекта Range
Range_0bject.Address(RowAbsolute, ColumnAbsolute, _
А1. Если необходимо использовать нотацию R1C1
MsgBox "Активной ячейкой является " & ActiveCell.Address
Range, необходимо использовать свойство Cells
Row является относительным адресом строки, а дополнительный параметр Column
Public Sub SelectAll()
Range("C7").Formula = "=Sum(Cl:C6)"
11.9.2 Использование методов объекта Range
Range_object. Clear
Range в Буфер обмена. Если требуется выполнить копирование и вставку одной командой: Range _ object.Сору destination
Range_object.Cut destination
Range совместно используется с семействами Rows
11.9.3 Примеры использования объектов Range
Sub Formatting()
Dim currCell as Range
Подобный материал:
1   ...   17   18   19   20   21   22   23   24   25

11.9 Использование объекта Range



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

Диапазон можно задать в программе следующим образом:
  1. Используя ссылку на ячейки, например, Range ("G14") или Range("B1:B6").
  2. Используя имя диапазона, например, "Итоги". Чтобы сослаться на диапазон, требуется указать выражение Range("Итоги").
  3. Используя объект ActiveCell. Объект ActiveCell указывает на ячейку или объект Range, который имеет фокус при вводе данных с клавиатуры.
  4. Используя объект Selection. Объект Selection – это то, что выделено на рабочем листе. Объект Selection может указывать на тот же диапазон, что и объект ActiveCell, а может и не указывать. С помощью объекта Selection можно сослаться, например, на диапазон, включающий одну или несколько ячеек, на рисунок или на диаграмму. Объект ActiveCell всегда указывает на диапазон, содержащий одну ячейку.



11.9.1 Использование свойств объекта Range


Параметр Range_object, используемый при описании свойств, является ссылкой на диапазон. В качестве примеров ссылок можно привести следующие: Range("range_name"), где параметр range_name – имя диапазона, а также ActiveCell, или Selection, если выбран диапазон.

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

Range_0bject.Address(RowAbsolute, ColumnAbsolute, _

ReferenceStyle, External, RelativeTo)

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

По умолчанию применяется стиль ссылок А1. Если необходимо использовать нотацию R1C1, присвойте необязательному параметру ReferenceStyle значение xlR1C1. Для задания нотации А1 следует указать константу xlA1.

По умолчанию ссылки являются локальными. Чтобы возвратить внешнюю ссылку, присвойте необязательному параметру External значение True.

Дополнительный параметр RelativeTo позволяет задать абсолютные координаты точки, относительно которой вычисляется положение заданного диапазона. Если параметры Row-Absolute и ColumnAbsolute имеют значение False, a аргумент ReferenceStyle – значение xlR1C1, то параметр RelativeTo указывать обязательно.

Например, свойство Address используется для вывода в окне сообщения положения активной ячейки (рис. 11.4). Для этого укажите следующую инструкцию:

MsgBox "Активной ячейкой является " & ActiveCell.Address


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

Range_object.Cells(Row, Column)




Рис. 11.4  Вывод положения активной ячейки


Необязательный параметр Row является относительным адресом строки, а дополнительный параметр Column – относительным адресом столбца. Например, если необходимо перемещаться к разным диапазонам в программе и вводить в них данные, можно использовать следующую программу:


'Если начальной ячейкой (диапазоном) являлась ячейка А1, то

'после выполнения следующей инструкции активной станет

'ячейка А2.

ActiveCell.Cells(2).Activate

ActiveCell.Value = 12

'После выполнения следующей инструкции активной ячейкой

'становится ячейка С2.

ActiveCell.Cells(, 3).Activate

ActiveCell.Value = "Итог"

'Ввод в ячейку D3 значения 100.

ActiveCell.Cells(2, 2).Activate

ActiveCell.Value = 100


Свойство CurrentRegion. Свойство CurrentRegion очень полезное свойство объекта Range. Предположим, что требуется часто импортировать данные на рабочий лист. В некоторых случаях результат включает пять строк, а в других – более 500 строк. Для выбора диапазона данных используется свойство CurrentRegion. Оно указывает на объект Range, включающий диапазон ячеек, границами которого являются пустые строки и пустые столбцы.

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


Public Sub SelectAll()

'Активизация первой ячейки результирующего множества

Range ("А2") .Activate

'Выделение всего результирующего множества.

'Обратите внимание на то, что метод Select использован для

'того, чтобы выделить диапазон, включающий несколько ячеек.

ActiveCell.CurrentRegion.Select

'Для вывода количества строк в результирующем множестве,

'используется свойство Count.

MsgBox "Число строк равно " & Selection.Rows.Count

End Sub


На рис.11.5 показан результат выполнения данной процедуры.





Рис. 11.5  Вывод числа строк в результирующем множестве ячеек


Свойство Formula. Свойство Formula используется для задания или чтения формулы в стиле А1. После ввода формулы в объект Range свойстству HasFormula автоматически присваивается значение True. Например, если необходимо задать функцию Sum для диапазона С7, укажите следующую инструкцию:

Range("C7").Formula = "=Sum(Cl:C6)"

Свойство Name. Чтобы присвоить в программе имя диапазону, используется свойство Name. Например, для задания диапазона Titles укажите следующую инструкцию:

Range("A1:D1").Name = "Titles"

Свойство Value. Для установки или чтения содержимого указанной ячейки используется Value.

11.9.2 Использование методов объекта Range



Параметр Range_object, используемый при описании синтаксиса методов, является ссылкой на диапазон. В качестве примеров ссылок можно привести следующие: range("range_na-me"), где параметр range_name – имя диапазона, ActiveCell, или Selection, если выбран диапазон.

Некоторые методы объекта Range, например, метод Activate, рассматривались выше. Обратите внимание, что ниже не описывается метод Add. Это вызвано тем, что объект Range не входит ни в одно семейство.

Метод AutoFit. Метод AutoFit используется, чтобы задать автоматическую настройку ширины столбца и высоты строки диапазона. Данный метод имеет следующий синтаксис:

Range_object.AutoFit

Если необходимо использовать метод AutoFit для выделенного диапазона, можно использовать следующий фрагмент:

Range("А2").Activate

ActiveCell.CurrentRegion.Select

Selection.AutoFit


Методы Clear, ClearComments, ClearContents, ClearFormats, ClearNotes. Для очистки диапазона используется метод Clear. Он имеет следующий синтаксис:

Range_object. Clear


265

Методы ClearComments, ClearContents, ClearFormats и ClearNotes позволяют убрать комментарии, содержимое ячеек, форматы и примечания.

Если удаляется диапазон ячеек, то находящиеся рядом (смежные) ячейки сдвигаются на место удаленных. При очистке убирается содержимое ячеек, форматы и комментарии, но сами пустые ячейки остаются.

Метод Сору. Метод Сору используется для копирования диапазона или другого объекта в Буфер обмена. Данный метод имеет два варианта синтаксиса:

Object. Copy

Копирует объект, в данном случае, объект Range в Буфер обмена.

Если требуется выполнить копирование и вставку одной командой:

Range _ object.Сору destination

Параметр destination определяет диапазон, в который производится копирование.

Метод Cut. Метод Cut позволяет вырезать объект и поместить его либо в Буфер обмена, либо в указанный диапазон. Его синтаксис похож на синтаксис метода Сору:

Range_object.Cut destination

Необязательный параметр destination определяет диапазон, в который требуется произвести вставку объекта. Если данный аргумент опущен, то объект вырезается и копируется в Буфер обмена.

Свойство Count. В свойстве Count хранится число объектов семейства. Обычно данное свойство применяется, если объект Range совместно используется с семействами Rows и Columns (рис. 11.6), например:

Public Sub countit()

Dim Counting As String

ActiveCell.CurrentRegion.Select

Counting = "Число ячеек = " & Selection.Count

Counting = Counting & Chr(13) & "Число строк = " & _

Selection.Rows.Count

Counting = Counting & Chr(13) & "Число столбцов = " & _

Selection.Columns.Count

MsgBox Counting

End Sub





Рис. 11.6  Вывод числа ячеек, строк и столбцов

в выделенном диапазоне


Метод PasteSpecial. Чтобы вставить диапазон или другой объект из Буфера обмена, используется метод PasteSpecial. Данный метод идентичен команде Правка\Специальная вставка (Edit\Paste Special). Синтаксис метода PasteSpecial следующий.

Range_object.PasteSpecial paste, operation, skipBlanks, transpose

Необязательный параметр paste определяет элементы диапазона, – формулы, данные, форматы, комментарии, – которые требуется вставить. Допустимыми значениями данного аргумента являются константы Excel: xlPasteAll (по умолчанию), xlPasteFormulas, xlPasteValues, xlPasteFormats, xlPasteNotes или xlPasteAllExceptBorders.

Чтобы определить тип вставки, используется дополнительный параметр operation. Допустимыми значениями данного аргумента являются константы: xlPasteSpecialOperationNone (по умолчанию), xlPasteSpecialOperationAdd, xlPasteSpecial-OperationSubtract, xlPasteSpecialOperationMultiply или xlPaste-SpecialOperationDivide.

Если следует пропустить при вставке пустые ячейки, присвойте необязательному параметру skipBlanks значение True. Значение по умолчанию для данного аргумента равно False.

Если требуется при вставке поменять местами строки и столбцы, присвойте необязательному параметру transpose значение True. Значение по умолчанию для данного аргумента равно False.

11.9.3 Примеры использования объектов Range



Форматирование диапазонов. Как изменить начертание или шрифт содержимого ячеек диапазона? При рассмотрении свойств объекта Range эти свойства не обсуждались. Причиной этого является то, что объект Range не имеет свойств Bold, Italic и т.п. Эти свойства принадлежат объекту Font, который относится ко многим объектам, включая и объект Range. Покажем использование свойств объекта Font:


Sub Formatting()

With Selection.Font

.Name = "Times New Roman"

.FontStyle = "Bold"

.Size = 12

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

End With

End Sub

Обратите внимание на свойство Underline. Можно было бы ожидать, что оно равно либо True, либо False. Однако дело обстоит иначе. Excel поддерживает несколько стилей подчеркивания. Допустимыми значениями данного свойства являются константы: xlUnderlineStyleNone, xlUnderlineStyleSingle, xlUnderline-StyleDouble, xlUnderlineStyleSingleAccounting и xlUnderlineStyle-DoubleAccounting.

Работа c отдельными ячейками диапазона. В некоторых случаях требуется получить содержимое заданной ячейки диапазона. Для этого используется инструкция For …Each:

Dim currCell as Range

For each currCell in Range("Data")

If currCell.Value >100000 Then

With currCell.Font

.Bold = True

.Underline = xlUnderlineStyleDouble

End With

End If

Next currCell