Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ОФИСНОГО ПРОГРАММИРОВАНИЯ И ЯЗЫК VBA - 1....doc
Скачиваний:
59
Добавлен:
17.12.2018
Размер:
1.88 Mб
Скачать

Что определяет объект Range?

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

xlApp.Range("A1:A2") = 2

xlApp.Range("B1") = "=A1+A2"

xlApp.Range("B2") = "=A1*A2"

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

Метод Range

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

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

Function Range(Start, End) As Range

Он имеет два параметра: Start и End - и возвращает как результат объект класса Range.

Если объект Range уже построен, то значения его параметров Start и End можно переопределить, вызвав его метод SetRange, в котором можно задать новые значения этих параметров.

В следующем примере работы с документом Word демонстрируется как применение свойства Range, так и метода Range. В нем же показано и применение метода SetRange.

Public Sub WorkWithRange()

Dim myr As Range, myr1 As Range

Dim i As Byte

'Добавляем новый документ

Documents.Add

With ActiveDocument

'Добавляем 7 абзацев в текст созданного документа

For i = 1 To 7

.Paragraphs.Last.Range.Text = "Абзац " & i

.Paragraphs.Add

Next i

'Используется свойство Range

Set myr = .Paragraphs(1).Range

'Выделен первый абзац

myr.Select

'Новый объект myr1 задает пустой объект - позицию курсора

'В правой части вызывается метод Range

Set myr1 = ActiveDocument.Range(Start:=myr.Start, End:=myr.Start)

myr1.Select

'Теперь объект myr1 задает единственный символ -первый символ текста

'Здеесь использован метод SetRange

myr1.SetRange Start:=myr1.Start, End:=myr1.End + 1

myr1.Select

'Три абзаца с третьего по пятый выделяются курсивом

myr1.SetRange Start:=.Paragraphs(3).Range.Start, End:=.Paragraphs(5).Range.End

myr1.Font.Italic = True

myr1.Select

End With

End Sub

Пример 1.7. (html, txt)