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. |
Hinweise
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.