使用 Range 物件
使用 Visual Basic 時的常見工作是指定檔中的區域,然後使用它執行一些動作,例如插入文字或套用格式設定。 例如,您可能會想要撰寫巨集,以便在文件的某個部分中找出一個字或片語。 檔的部分可以由 Range 物件表示。 識別 Range 物件之後,就可以套用 Range 物件的方法和屬性,以便修改此範圍的內容。
Range 物件會參照文件中的連續區域。 每個 Range 物件都會用開始和結束字元位置加以定義。 與文件中使用書籤的方式很類似,Visual Basic 程序中 Range 物件是用來識別文件的特定部分。 Range 物件可以跟插入點一樣小,也可以跟整份文件一樣大。 不過,與書籤不同之處在於,Range 物件只有在定義此物件的程序執行時存在。
Start、End和StoryType屬性可唯一識別Range物件。 Start 和 End 屬性會傳回或設定 Range 物件的開始和結束字元位置。 位於文件開頭的字元位置是零,而第一個字元後面的位置是一,依此類推。 StoryType屬性的WdStoryType 常數表示幾個本文類型。
注意事項
[!注意事項] Range 物件與選取範圍無關。 也就是說,您可以定義並修改範圍,而不會變更目前的選取範圍。 此外,您也可以在文件中定義多重範圍,但每個文件窗格只會有一個選取範圍。
使用 Range 方法
您可以使用 Document 物件的 Range 方法,建立位於主要本文中而且具有指定起點和終點的 Range 物件。 下列範例會建立一個 Range 物件,此物件會以第一個字元的開頭為起點,並延伸至第十個字元。
Sub SetNewRange()
Dim rngDoc As Range
Set rngDoc = ActiveDocument.Range(Start:=0, End:=10)
End Sub
由此可以了解, Range 物件是在您將屬性或方法套用至 Range 物件時建立的。 例如,下列範例會將粗體格式設定套用至使用中文件的前 10 個字元。
Sub SetBoldRange()
Dim rngDoc As Range
Set rngDoc = ActiveDocument.Range(Start:=0, End:=10)
rngDoc.Bold = True
End Sub
當您需要多次參照 Range 物件時,可以使用 Set 陳述式來設定等於 Range 物件的變數。 不過,如果您只需要對 Range 物件執行單一動作,則不需要將物件儲存在變數中。 您也可以使用識別此範圍並變更 Bold 屬性的單一指令,達到相同的結果。
Sub BoldRange()
ActiveDocument.Range(Start:=0, End:=10).Bold = True
End Sub
與書籤一樣的是,範圍可以橫跨一組字元,也可以標示文件中的某個位置。 下列範例中的 Range 物件具有相同的起點和終點。 此範圍不包含任何文字。 下列範例會在使用中文件的開頭插入文字。
Sub InsertTextBeforeRange()
Dim rngDoc As Range
Set rngDoc = ActiveDocument.Range(Start:=0, End:=0)
rngDoc.InsertBefore "Hello "
End Sub
您可以使用字元位置編號來定義範圍的起點和終點 (如上所示),也可以使用 Start 和 End 屬性搭配 Selection 、 Bookmark 或 Range 等物件。 下列範例會建立一個 Range 物件,此物件是從第二個段落的開頭開始,並結束於第三個段落之後。
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 方法。
使用 Range 屬性
Range屬性會出現在多個物件上,例如Paragraph、Bookmark和Cell,並用來傳回Range物件。 下列範例會傳回參照使用中文件第一個段落的 Range 物件。
Sub SetParagraphRange()
Dim rngParagraph As Range
Set rngParagraph = ActiveDocument.Paragraphs(1).Range
End Sub
取得 Range 物件之後,您就可以使用此物件的任何屬性或方法來修改 Range 物件。 下列範例會選取使用中文件的第二個段落,然後將選取範圍置中。
Sub FormatRange()
ActiveDocument.Paragraphs(2).Range.Select
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
End Sub
如果您需要將許多屬性或方法套用至相同的 Range 物件,就可以使用 With...End With 結構。 下列範例會將使用中文件第一個段落的文字格式化。
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 屬性主題。
重新定義 Range 物件
您可以使用 SetRange 方法來重新定義現有的 Range 物件。 下列範例會將範圍定義成目前的選取範圍。 然後, SetRange 方法會重新定義範圍,以便讓此範圍參照目前的選取範圍以及後面 10 個字元。
Sub ExpandRange()
Dim rngParagraph As Range
Set rngParagraph = Selection.Range
rngParagraph.SetRange Start:=rngParagraph.Start, _
End:=rngParagraph.End + 10
End Sub
如需詳細資訊和範例,請參閱 Document 的 Range 方法。
注意事項
[!注意事項] 當您在偵錯巨集時,可以使用 Select 方法來確保 Range 物件會參照正確的文字範圍。 例如,下列指令會選取參照使用中文件第二和第三個段落的 Range 物件,然後格式化選取範圍的字型。
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
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。