Работа с объектами RangeWorking with Range Objects

Типичная задача при использовании Visual Basic — указание области в документе, а затем выполнение с ним какого-либо форматирования, например, вставки текста или применения форматирования.A common task when using Visual Basic is to specify an area in a document and then do something with it, such as insert text or apply formatting. Например, может потребоваться написать макрос, который ищет слово или фразу в части документа.For example, you may want to write a macro that locates a word or phrase within a portion of a document. Часть документа может быть представлена объектом Range .The portion of the document can be represented by a Range object. После определения объекта Range методы и свойства объекта Range могут быть применены для изменения содержимого диапазона.After the Range object is identified, methods and properties of the Range object can be applied to modify the contents of the range.

Объект Range ссылается на непрерывную область в документе.A Range object refers to a contiguous area in a document. Каждый объект Range определяется положением начального и конечного символов.Each Range object is defined by a starting and ending character position. Как и в случае использования закладок в документе, объекты Range используются в процедурах Visual Basic для определения определенных частей документа.Similar to the way bookmarks are used in a document, Range objects are used in Visual Basic procedures to identify specific portions of a document. Объект Range может быть небольшим, чем точка вставки, или как весь документ целиком.A Range object can be as small as the insertion point or as large as the entire document. Однако, в отличие от закладки, объект Range существует только во время выполнения процедуры, в которой он был определен.However, unlike a bookmark, a Range object exists only while the procedure that defined it is running.

Свойства Start, End и сторитипе уникально идентифицируют объект Range .The Start, End, and StoryType properties uniquely identify a Range object. Свойства Start и End возвращают или задают позиции начального и конечного символов объекта Range .The Start and End properties return or set the starting and ending character positions of the Range object. Положение символа в начале документа равно нулю, положение после первого символа равно единице и т. д.The character position at the beginning of the document is zero, the position after the first character is one, and so on. Существует несколько типов материала, представленных константами вдсторитипе свойства сторитипе .There are several story types represented by the WdStoryType constants of the StoryType property.

Примечание

Объекты Range не зависят от выделенного фрагмента.Range objects are independent of the selection. То есть вы можете определить и изменить диапазон, не изменяя текущий выделенный фрагмент.That is, you can define and modify a range without changing the current selection. Кроме того, в документе можно определить несколько диапазонов, но существует только один выбор для каждой области документа.You can also define multiple ranges in a document, but there is only one selection per document pane.

Использование метода RangeUsing the Range method

Используйте метод Range объекта Document для создания объекта Range , расположенного в основном материале и имеющего заданную начальную и конечную точку.Use the Range method of the Document object to create a Range object that is located in the main story and has a given start and endpoint. В приведенном ниже примере создается объект Range , который начинается с начала первого символа и расширяется с помощью десятого знака.The following example creates a Range object that starts at the beginning of the first character and extends through the tenth character.

Sub SetNewRange() 
 Dim rngDoc As Range 
 Set rngDoc = ActiveDocument.Range(Start:=0, End:=10) 
End Sub

Вы видите, что объект Range создается при применении свойства или метода к объекту Range .You can see that the Range object is created when you apply a property or method to the Range object. Например, приведенный ниже стиль применяет к первым 10 символам в активном документе полужирным шрифтом.For example, the following applies bold formatting to the first 10 characters in the active document.

Sub SetBoldRange() 
 Dim rngDoc As Range 
 Set rngDoc = ActiveDocument.Range(Start:=0, End:=10) 
 rngDoc.Bold = True 
End Sub

Если вам нужно несколько раз ссылаться на объект Range , можно использовать инструкцию Set , чтобы задать переменную, равную объекту Range .When you need to refer to a Range object multiple times, you can use the Set statement to set a variable equal to the Range object. Тем не менее, если для объекта Range требуется выполнить только одно действие, нет необходимости хранить объект в переменной.However, if you only need to perform a single action on a Range object, you do not need to store the object in a variable. Такой же результат можно получить, используя только одну инструкцию, определяющую диапазон, и изменяя свойство Bold .The same result can be achieved using just one instruction that identifies the range and changes the Bold property.

Sub BoldRange() 
 ActiveDocument.Range(Start:=0, End:=10).Bold = True 
End Sub

Как и закладка, диапазон может занимать группу символов или пометить место в документе.Like a bookmark, a range can span a group of characters or mark a location in a document. Объект Range в приведенном ниже примере имеет те же начальные и конечные точки.The Range object in the following example has the same starting and ending points. Диапазон не содержит текста.The range does not include any text. В примере ниже показано, как вставить текст в начало активного документа.The following example inserts text at the beginning of the active document.

Sub InsertTextBeforeRange() 
 Dim rngDoc As Range 
 Set rngDoc = ActiveDocument.Range(Start:=0, End:=0) 
 rngDoc.InsertBefore "Hello " 
End Sub

Начальную и конечные точки диапазона можно определить с помощью цифр позиции символов, как показано выше, или использовать свойства Start и End с такими объектами, как выделенный фрагмент, закладка или объект Range . You can define the beginning and endpoints of a range using the character position numbers, as shown above, or use the Start and End properties with objects such as Selection, Bookmark, or Range objects. В следующем примере создается объект Range , начинающийся с начала второго абзаца и заканчивающегося после третьего абзаца.The following example creates a Range object beginning at the start of the second paragraph and ending after the third paragraph.

Sub NewRange() 
 Dim doc As Document 
 Dim rngDoc As Range 
 
 Set doc = ActiveDocument 
 Set rngDoc = doc.Range(Start:=doc.Paragraphs(2).Range.Start, _ 
 End:=doc.Paragraphs(3).Range.End) 
End Sub

Дополнительные сведения и примеры представлены в разделе метод Range .For additional information and examples, see the Range method.

Использование свойства RangeUsing the Range property

Свойство Range отображается в нескольких объектах, таких как параграф, Bookmark и * * Cell* *, и используется для возврата объекта Range .The Range property appears on multiple objects—such as Paragraph, Bookmark, and ** Cell**—and is used to return a Range object. В приведенном ниже примере возвращается объект Range , ссылающийся на первый абзац в активном документе.The following example returns a Range object that refers to the first paragraph in the active document.

Sub SetParagraphRange() 
 Dim rngParagraph As Range 
 Set rngParagraph = ActiveDocument.Paragraphs(1).Range 
End Sub

После создания объекта Range можно использовать любые его свойства или методы для изменения объекта Range .After you have a Range object, you can use any of its properties or methods to modify the Range object. В приведенном ниже примере выделяется второй абзац в активном документе, после чего выполняется центрирование выделенного фрагмента.The following example selects the second paragraph in the active document and then centers the selection.

Sub FormatRange() 
 ActiveDocument.Paragraphs(2).Range.Select 
 Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 
End Sub

Если необходимо применить множество свойств или методов к одному объекту Range , можно использовать метод with... End With Structure.If you need to apply numerous properties or methods to the same Range object, you can use the With…End With structure. В приведенном ниже примере показано форматирование текста в первом абзаце активного документа.The following example formats the text in the first paragraph of the active document.

Sub FormatFirstParagraph() 
 Dim rngParagraph As Range 
 Set rngParagraph = ActiveDocument.Paragraphs(1).Range 
 With rngParagraph 
 .Bold = True 
 .ParagraphFormat.Alignment = wdAlignParagraphCenter 
 With .Font 
 .Name = "Stencil" 
 .Size = 15 
 End With 
 End With 
End Sub

Дополнительные сведения и примеры представлены в разделе свойство Range .For additional information and examples, see the Range property topic.

ПереОпределение объекта RangeRedefining a Range object

Используйте метод SetRange для переопределения существующего объекта Range .Use the SetRange method to redefine an existing Range object. В приведенном ниже примере определяется диапазон как текущий выделенный фрагмент.The following example defines a range as the current selection. Затем метод SetRange переопределяет диапазон, чтобы он ссылался на текущий выделенный фрагмент, а также на следующие 10 символов.The SetRange method then redefines the range so that it refers to the current selection plus the next 10 characters.

Sub ExpandRange() 
 Dim rngParagraph As Range 
 Set rngParagraph = Selection.Range 
 rngParagraph.SetRange Start:=rngParagraph.Start, _ 
 End:=rngParagraph.End + 10 
End Sub

Дополнительные сведения и примеры представлены в разделе метод Range для документа.For additional information and examples, see the Range method for the Document.

Примечание

При отладке макросов можно использовать метод SELECT, чтобы убедиться, что объект Range ссылается на правильный диапазон текста.When debugging your macros, you can use the Selectmethod to ensure that a Range object is referring to the correct range of text. Например, следующая команда выделяет объект Range , ссылающийся на второй и третий абзацы в активном документе, а затем форматирует шрифт выделенного фрагмента.For example, the following selects a Range object that refers to the second and third paragraphs in the active document, and then formats the font of the selection.

Sub SelectRange() 
 Dim rngParagraph As Range 
 
 Set rngParagraph = ActiveDocument.Paragraphs(2).Range 
 
 rngParagraph.SetRange Start:=rngParagraph.Start, _ 
 End:=ActiveDocument.Paragraphs(3).Range.End 
 rngParagraph.Select 
 
 Selection.Font.Italic = True 
End Sub

Поддержка и обратная связьSupport and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.