Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MVBA_2000.DOC
Скачиваний:
13
Добавлен:
08.11.2019
Размер:
599.55 Кб
Скачать

3.2.5.2. Объект Selection

Объект Selection задает выделенную в документе область (фрагмент).

Выделенный в документе фрагмент задает непрерывную область элементов, но не является диапазоном, заданным своим началом и концом. Выделить можно только один фрагмент, поэтому один объект Selection может быть активен в данный момент времени.

Используя свойства и методы объекта Selection, можно получить и изменить выделенный фрагмент.

Объект Selection может быть получен с помощью свойства Selection или метода Select других объектов.

Свойство Selection возвращает уже существующий объект. Свойством Selection обладают объекты верхнего уровня, по отношению к объекту Selection, такие как Application, Window(окно), Pane(панель). При этом объект Selection ссылается соответственно на выделенный фрагмент активного документа, выделенный фрагмент указанного окна или на выделенный фрагмент секции окна.

В следующем примере процедура осуществляет форматирование символов выделенного фрагмента в активном документе:

Пример 3.12.

Sub slct()

With Selection

.Font.Name = "Arial"

.Font.Size = 16

End With

End Sub

Метод Select позволяет создать новый объект. Этим методом обладают объекты класса Range. Метод Select реализован как процедура:

Sub Select()

Она не имеет параметров и не возвращает объект Selection. Мы не можем получить ссылку на объект Selection и не можем создать переменную этого класса, так как это делали при рассмотрении объекта Range.

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

Пример 3.13.

Sub sеlct2()

ActiveDocument.Paragraphs(1).Range.Select

With Selection

.Font.Name = "Arial"

.Font.Size = 16

End With

End Sub

Объект Selection является примером косвенной адресации. Он задает некоторую выделенную область и, его свойства и методы позволяют изменять состояние этой области. Это позволяет создавать процедуры, не зависимые от области и использовать их по необходимости.

Пример 3.14.

Sub sеlct2()

ActiveDocment._

Paragraphs(1).Range.Select

Slct

End Sub

Sub Selct3()

Set aDoc = ActiveDocument

Set Rng = aDoc.Range(Start:=_

aDoc.Paragraphs(2).Range.Start, _ End:=aDoc.Paragraphs(5).Range.End)

Rng.Select

Slct

End Sub

Public sub Slct()

With Selection

.Font.Name = "Arial"

.Font.Size = 16

End With

End sub

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

Рассмотрим некоторые методы присущие объектам Selection и Range при работе с текстом:

Move – метод перемещения точки вставки;

MoveStart, MoveENDметоды изменения значения свойств Start и End;

Collapseсворачивает диапазон к его началу или концу.

Nextметод получения ссылки на очередной элемент коллекции объектов в диапазоне или выделенном фрагменте;

Delete - удаляет текст входящий в диапазон.

InsertAfter , InsertBefore вставляет текст до или после текста, входящего в диапазон. После вставки текста диапазон расширяется, включая в себя вставленный текст.

Copyкопирует объект в буфер обмена;

Cut - перемещает объект в буфер обмена;

Paste позволяет поместить содержимое буфера в область, заданную объектом Range или Selection.

Методы Move, MoveStart, MoveEnd позволяют переопределить размеры объекта Selection или Range и имеют одинаковый формат. Рассмотрим его на примере метода Move:

Function Move([Unit], [Count]) As Long, где:

Unit – определяет единицу перемещения. Параметр принимает значения wdCharacter (по умолчанию), wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow, WdTable;

Count – определяет количество единиц перемещения. Знак перед Count задает направление перемещения («+» - перемещение вперед, «-» - назад.

Метод возвращает количество единиц, на которое фактически произошло перемещение, или 0, если оно не было выполнено.

В следующем примере показано использование метода MoveEnd для изменения диапазона и выделенного фрагмента.

Пример 3.15.

Public Sub Rang4()

With ActiveDocument.Paragraphs(1).Range

.InsertBefore Text:="Hello"

.MoveEnd unit:=wdParagraph, Count:=2

.Select

End With

End Sub

Public Sub Selct4()

With Selection

.InsertBefore "Hello"

.MoveEnd unit:=wdSentence,_ Count:=1

End With

End Sub

Выполнения методов Delete, InsertAfter, InsertBefore также приводит к переопределению объекта, он сжимается или расширяется в зависимости от выполненных действий.

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

Пример 3.16.

‘ процедура осуществляет замену шрифта Times New Roman на Ariel

Public Sub Rang5()

Dim kol As Byte

kol = ActiveDocument.Words.Count

Set Rng = ActiveDocument.Words(1)

For i = 1 To kol

If Rng.Font.Name = "Times New Roman" Then

Rng.Font.Name = "Ariel"

End If

Set Rng = Rng.Next(Unit:=wdWord, Count:=1)

Next i

End Sub

Нередко при работе с текстом нужно определить пустой диапазон для получения точки вставки. Сделать это можно, либо переопределив диапазон таким образом, чтобы значения свойств Start и End совпадали, либо применив к диапазону метод сжатия – Collapse.

Sub Collapse([Direction]),

где Direction определяет направление сжатия диапазона и принимает значения wdCollapseStart (в начальную точку) и wdCollapseEnd (в конечную точку).

В примере текст второго абзаца заменяется словом Hello, метод Collapse сжимает объект Selection в точку вставки, которая устанавливается в конец абзаца.

Пример 3.17.

Public Sub rang7()

ActiveDocument.Paragraphs(2).Range.Select

Selection.Text = "Hello"

Selection.Collapse direction:=wdCollapseEnd

End Sub

В следующем примере приведена процедура rang8, которая преобразует в активном документе текст заголовков к верхнему регистру. Если текст диапазона – слово соответствует форматам стиля «Заголовок 1», то происходит замена текста диапазона – прописные буквы заменяются строчными.

Пример 3.18.

Public Sub rang8()

Dim kol As Byte

Dim C_m, C_b, str, res As String

C_m = "йцукенгшщзхъфывапролджэячсмитьбю"

C_b = "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ"

kol = ActiveDocument.Words.Count

Set rng = ActiveDocument.Words(1)

For k = 1 To kol

If rng.Font.Name="Arial" And rng.Font.Size=14 And rng.Bold=True Then

str = rng.Text: res = ""

For i = 1 To Len(str)

If InStr(C_m, Mid$(str, i, 1)) > 0 Then

res = res + Mid$(C_b, InStr(C_m, Mid$(str, i, 1)), 1)

Else

res = res + Mid$(str, i, 1)

End If

Next i

rng.Text = res

rng.Style = wdStyleHeading1

End If

Set rng = rng.Next(unit:=wdWord, Count:=1)

Next k

End Sub

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]