Arbeiten mit Range-Objekten

Eine häufige Aufgabe bei Visual Basic besteht darin, einen Bereich in einem Dokument anzugeben und dann etwas damit zu tun, z. B. Text einfügen oder Formatierung anwenden. Sie können z. B. ein Makro schreiben, das ein Wort oder einen Ausdruck in einem Teil eines Dokuments sucht. Der Teil des Dokuments kann durch ein Range-Objekt dargestellt werden. Nachdem das Range-Objekt identifiziert wurde, können Methoden und Eigenschaften des Range-Objekts angewendet werden, um den Inhalt des Bereichs zu ändern.

Ein Range-Objekt bezieht sich auf einen zusammenhängenden Bereich in einem Dokument. Jedes Range-Objekt wird durch eine Anfangs- und eine Endzeichenposition definiert. Ähnlich wie bei Textmarken werden Range -Objekte in Visual Basic-Prozeduren zur Identifizierung bestimmter Abschnitte eines Dokuments verwendet. Ein Range -Objekt kann so klein wie die Einfügemarke sein oder so groß wie das gesamte Dokument. Ein Range -Objekt ist im Gegensatz zu einer Textmarke jedoch nur während der Ausführung der das Objekt definierenden Prozedur vorhanden.

Die Eigenschaften Start, End und StoryType identifizieren ein Range-Objekt eindeutig. Die Start - und End -Eigenschaften geben die Anfangs- oder Endzeichenposition des Range -Objekts zurück oder legen sie fest. Die Zeichenposition am Anfang des Dokuments ist Null, die Position nach dem ersten Zeichen Eins usw. Es gibt mehrere Storytypen, die durch die WdStoryType-Konstanten der StoryType-Eigenschaft dargestellt werden.

Hinweis

Range-Objekte sind unabhängig von der Markierung. Das heißt, Sie können einen Bereich definieren und modifizieren, ohne die aktuelle Markierung zu ändern. Sie können in einem Dokument auch mehrere Bereiche definieren, während es nur eine Markierung pro Dokumentausschnitt gibt.

Verwenden der Range-Methode

Verwenden Sie die Range-Methode des Document-Objekts, um ein Range-Objekt zu erstellen, das sich im Hauptthema befindet und einen bestimmten Start- und Endpunkt besitzt. Im folgenden Beispiel wird ein Range -Objekt erstellt, das am Anfang des ersten Zeichens beginnt und sich bis zum zehnten Zeichen erstreckt.

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

Sie können sehen, dass das Range-Objekt erstellt wurde, wenn Sie eine Eigenschaft oder Methode auf das Range-Objekt anwenden, das in einer Variablen gespeichert ist. In dem folgenden Beispiel wird den ersten zehn Zeichen im aktiven Dokument Fettformatierung zugewiesen.

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

Wenn Sie sich mehrmals auf ein Range-Objekt beziehen müssen, können Sie die Anweisung Set verwenden, mit der Sie eine Variable mit dem Range-Objekt gleichsetzen können. Wenn Sie jedoch an einem Range -Objekt nur eine einzige Aktion durchführen müssen, müssen Sie das Objekt nicht in einer Variablen speichern. Dasselbe Ergebnis kann mit nur einer Anweisung erreicht werden, die den Bereich kennzeichnet und die Bold -Eigenschaft ändert.

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

Wie eine Textmarke kann ein Bereich eine Gruppe von Zeichen umfassen oder eine Stelle in einem Dokument markieren. Das Range-Objekt im folgenden Beispiel hat denselben Start- und Endpunkt. Der Bereich enthält keinen Text. Im folgenden Beispiel wird am Anfang des aktiven Dokuments Text eingefügt.

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

Sie können den Anfang und die Endpunkte eines Bereichs mithilfe der Zeichenpositionsnummern definieren, wie oben dargestellt, oder die Start- und End-Eigenschaften mit Objekten wie Selection-, Bookmark- oder Range-Objekten verwenden. Im folgenden Beispiel wird ein Range -Objekt erstellt, das am Anfang des zweiten Absatzes beginnt und nach dem dritten Absatz endet.

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

Weitere Informationen und Beispiele finden Sie unter range-Methode.

Verwenden der

Die Range-Eigenschaft wird für mehrere Objekte angezeigt, z. B. Paragraph, Bookmark und Cell, und wird zum Zurückgeben eines Range-Objekts verwendet. Im folgenden Beispiel wird ein Range -Objekt zurückgegeben, das auf den ersten Absatz im aktiven Dokument verweist.

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

Nachdem Sie über ein Range-Objekt verfügen, können Sie eine der Eigenschaften oder Methoden verwenden, um das Range-Objekt zu ändern. 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

Wenn Sie mehrere Eigenschaften oder Methoden auf dasselbe Range-Objekt anwenden müssen, können Sie die Struktur With...End With verwenden. Im folgenden Beispiel wird der Text im ersten Absatz des aktiven Dokuments formatiert.

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

Weitere Informationen und Beispiele finden Sie im Thema Range-Eigenschaft.

Neudefinieren eines

Verwenden Sie die SetRange-Methode, um ein vorhandenes Range-Objekt neu zu definieren. Im folgenden Beispiel wird ein Bereich als aktuelle Markierung definiert. Die SetRange -Methode definiert den Bereich neu, sodass er die aktuelle Markierung und die nächsten 10 Zeichen umfasst.

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

Weitere Informationen und Beispiele finden Sie unter range-Methode für das Dokument.

Hinweis

Beim Debuggen Ihrer Makros können Sie mit der Select-Methode sicherstellen, dass ein Range-Objekt auf den richtigen Textbereich verweist. Im Folgenden wird beispielsweise ein Range-Objekt ausgewählt, das auf den zweiten und dritten Absatz im aktiven Dokument verweist, und dann die Schriftart der Auswahl formatiert.

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 und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.