Shapes.Range-Eigenschaft (Excel)

Gibt ein Objekt ShapeRange zurück, das eine Teilmenge der Formen in einer Sammlung Shapes repräsentiert.

Syntax

Ausdruck. Bereich (Index)

expression Eine Variable, die ein Shapes-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
Index Erforderlich Variant Die einzelnen Formen für den Bereich. Kann eine Ganzzahl sein, die die Indexnummer der Form angibt, eine Zeichenfolge, die den Namen der Form angibt, oder ein Array, das entweder Ganzzahlen oder Zeichenfolgen enthält.

HinwBemerkungeneise

Obwohl Sie die Range-Eigenschaft verwenden können, um eine beliebige Anzahl von Formen zurückzugeben, ist es einfacher, die Item-Methode zu verwenden, wenn Sie nur ein einzelnes Element der Auflistung zurückgeben möchten. ist beispielsweise Shapes(1) einfacher als Shapes.Range(1).

Um für Index ein Array aus Ganzzahlen und Zeichenfolgen festzulegen, können Sie die Funktion Array verwenden. So gibt z. B. die folgende Anweisung zwei per Namen spezifizierte Formen zurück.

 Dim arShapes() As Variant 
 Dim objRange As Object 
 arShapes = Array("Oval 4", "Rectangle 5") 
 Set objRange = ActiveSheet.Shapes.Range(arShapes)

In Microsoft Excel können Sie diese Eigenschaft nicht dazu verwenden, das Objekt ShapeRange zurückzugeben, in dem alle Objekte Shape eines Arbeitsblattes enthalten sind. Verwenden Sie stattdessen den folgenden Code.

 Worksheets(1).Shapes.SelectAll ' select all shapes set sr = Selection.ShapeRange ' create ShapeRange

Beispiel

In diesem Beispiel wird das Füllmuster für die Formen 1 und 3 in myDocument gesetzt.

Set myDocument = Worksheets(1) 
myDocument.Shapes.Range(Array(1, 3)) _ 
 .Fill.Patterned msoPatternHorizontalBrick

In diesem Beispiel wird das Füllmuster für die Formen Oval 4 und Rechteck 5 in myDocument festgelegt.

Dim arShapes() As Variant 
Dim objRange As Object 
Set myDocument = Worksheets(1) 
arShapes = Array("Oval 4", "Rectangle 5") 
Set objRange = myDocument.Shapes.Range(arShapes) 
objRange.Fill.Patterned msoPatternHorizontalBrick

In diesem Beispiel wird das Füllmuster für Form 1 in myDocument gesetzt.

Set myDocument = Worksheets(1) 
Set myRange = myDocument.Shapes.Range(1) 
myRange.Fill.Patterned msoPatternHorizontalBrick

In diesem Beispiel wird ein Array erstellt, das alle AutoFormen in myDocument enthält. Anhand des Arrays wird ein Formbereich definiert, und es werden alle Formen horizontal in diesem Bereich verteilt.

Set myDocument = Worksheets(1) 
With myDocument.Shapes 
 numShapes = .Count 
 If numShapes > 1 Then 
 numAutoShapes = 1 
 ReDim autoShpArray(1 To numShapes) 
 For i = 1 To numShapes 
 If .Item(i).Type = msoAutoShape Then 
 autoShpArray(numAutoShapes) = .Item(i).Name 
 numAutoShapes = numAutoShapes + 1 
 End If 
 Next 
 If numAutoShapes > 1 Then 
 ReDim Preserve autoShpArray(1 To numAutoShapes) 
 Set asRange = .Range(autoShpArray) 
 asRange.Distribute msoDistributeHorizontally, False 
 End If 
 End If 
End With

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.