Arbeiten mit Formen (Zeichnungsobjekten)

Formen oder Zeichnungsobjekte werden durch drei verschiedene Objekte dargestellt:

Objekt Beschreibung
Shapes-Auflistung Verwenden Sie , um Shapes zu erstellen und alle Formen auf einem bestimmten Arbeitsblatt zu durchlaufen.
ShapeRange-Auflistung Verwenden Sie , um mehrere Shapes auf die gleiche Weise zu ändern, wie Sie mit mehreren Shapes in der Benutzeroberfläche arbeiten.
Shape-Objekt Verwenden Sie , um eine einzelne Form zu formatieren oder zu ändern.

Festlegen von Eigenschaften für eine Form

Viele Formateigenschaften von Formen werden nicht durch Eigenschaften festgelegt, die direkt für das Objekt Shape oder ShapeRange gelten. Stattdessen werden verwandze Formattribute unter den sekundären Objekten gruppiert, wie dem FillFormat-Objekt, das alle Eigenschaften zur Füllung der Form enthält, oder dem LinkFormat-Objekt, das alle Eigenschaften enthält, die für verknüpfte OLE-Objekte eindeutig sind.

Zum Festlegen von Eigenschaften für eine Form müssen Sie zuerst das Objekt zurückgeben, das den Satz verwandter Formeigenschaften darstellt, und dann die Eigenschaften dieses zurückgegebenen Objekts festlegen. Sie verwenden z. B. die Fill-Eigenschaft, um das FillFormat-Objekt zurückzugeben, und legen dann die ForeColor -Eigenschaft des FillFormat-Objekts fest, um die Vordergrundfarbe der Füllung für die angegebene Form festzulegen, wie im folgenden Beispiel gezeigt.

Worksheets(1).Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)

Anwenden einer Eigenschaft oder Methode auf mehrere Formen gleichzeitig

Auf der Benutzeroberfläche können Sie einige Vorgänge mit mehreren ausgewählten Shapes ausführen. Beispielsweise können Sie mehrere Formen auswählen und alle ihre individuellen Füllungen gleichzeitig festlegen. Sie können andere Vorgänge ausführen, wenn nur eine einzelne Form ausgewählt ist. Beispielsweise können Sie den Text in einer Form nur bearbeiten, wenn eine einzelne Form ausgewählt ist.

In Visual Basic haben Sie zwei Möglichkeiten, Eigenschaften und Methoden auf einen Satz von Formen anzuwenden. Beide Varianten erlauben es, jede Operation, die Sie auf eine einzelne Form anwenden können, auch auf einen Formbereich anzuwenden, unabhängig davon, ob Sie dieselbe Operation auch über die Benutzeroberfläche ausführen können oder nicht.

  • Wenn sich eine Operation über die Benutzeroberfläche auf eine Mehrfachauswahl von Formen anwenden lässt, können Sie dieselbe Mehrfachoperation auch in Visual Basic ausführen, indem Sie eine ShapeRange -Auflistung erstellen, die die gewünschten Formen enthält, und anschließend die geeigneten Eigenschaften und Methoden direkt auf diese ShapeRange -Auflistung anwenden.

  • Wenn eine Operation über die Benutzeroberfläche nicht auf eine Mehrfachauswahl von Formen angewendet werden kann, ist es dennoch möglich, eine solche Mehrfachoperation in Visual Basic auszuführen, indem Sie die Shapes -Auflistung oder eine ShapeRange -Auflistung durchlaufen, die die gewünschten Formen enthält, und dabei die geeigneten Eigenschaften und Methoden auf die einzelnen Shape -Objekte in der Auflistung anwenden.

Viele Eigenschaften und Methoden, die für das Shape-Objekt und die ShapeRange-Auflistung gelten, schlagen fehl, wenn sie auf bestimmte Arten von Formen angewendet werden. Beispielsweise schlägt die TextFrame-Eigenschaft fehl, wenn sie auf eine Form angewendet wird, die keinen Text enthalten kann.

Wenn Sie nicht sicher sind, dass für jede der Formen in einer ShapeRange-Auflistung eine bestimmte Eigenschaft oder Methode angewendet werden kann, wenden Sie die Eigenschaft oder Methode nicht auf die ShapeRange-Auflistung an. Wenn Sie eine dieser Eigenschaften oder Methoden auf eine Auflistung von Formen anwenden möchten, müssen Sie die Auflistung durchlaufen und jede individuelle Form testen, um sicherzustellen, dass es sich um einen entsprechenden Formtyp handelt, bevor Sie die Eigenschaft oder Methode auf sie anwenden.

Erstellen einer ShapeRange-Auflistung, die alle Formen auf einem Blatt enthält

Sie können ein ShapeRange-Objekt erstellen, das alle Shape-Objekte eines Blattes enthält, indem Sie die Formen markieren und anschließend mithilfe der ShapeRange-Eigenschaft ein ShapeRange-Objekt zurückgeben, das alle markierten Formen enthält.

Worksheets(1).Shapes.Select 
Set sr = Selection.ShapeRange

In Microsoft Excel ist das Index-Argument für die Range-Eigenschaft der Shapes-Auflistung nicht optional, sodass Sie diese Eigenschaft nicht ohne ein Argument verwenden können, um ein ShapeRange-Objekt zu erstellen, das alle Formen in einer Shapes-Auflistung enthält.

Anwenden einer Eigenschaft oder Methode auf eine ShapeRange-Auflistung

If you can perform an operation on multiple selected shapes in the user interface at the same time, you can do the programmatic equivalent by constructing a ShapeRange collection and then applying the appropriate properties or methods to it. Im folgenden Beispiel wird ein Formbereich erstellt, der die Formen "Großer Stern" und "Kleiner Stern" myDocument auf enthält, und wendet eine Farbverlaufsfüllung darauf an.

Set myDocument = Worksheets(1) 
Set myRange = myDocument.Shapes.Range(Array("Big Star", _ 
 "Little Star")) 
myRange.Fill.PresetGradient _ 
 msoGradientHorizontal, 1, msoGradientBrass

Es folgen allgemeine Richtlinien dazu, wie sich Eigenschaften und Methoden verhalten, wenn sie auf eine ShapeRange-Auflistung angewendet werden.

  • Das Anwenden einer Methode auf die Auflistung führt zu demselben Ergebnis wie das Anwenden der Methode auf jedes einzelne Shape-Objekt dieser Auflistung.

  • Das Festlegen des Werts einer Eigenschaft der Auflistung entspricht dem Festlegen des Werts der Eigenschaft für jede einzelne Form in diesem Bereich.

  • A property of the collection that returns a constant returns the value of the property for an individual shape in the collection if all shapes in the collection have the same value for that property. If not all shapes in the collection have the same value for the property, it returns the "mixed" constant.

  • Eine Eigenschaft der Auflistung, die einen einfachen Datentyp (z. B. Long, Single oder String) zurückgibt, gibt den Wert der Eigenschaft für eine einzelne Form zurück, wenn alle Formen der Auflistung denselben Wert für diese Eigenschaft besitzen.

  • Der Wert einiger Eigenschaften kann nur dann zurückgegeben oder festgelegt werden, wenn die Auflistung genau eine Form umfasst. Enthält die Auflistung mehr als eine Form, so tritt ein Laufzeitfehler auf. Dies ist in der Regel beim Zurückgeben oder Festlegen von Eigenschaften der Fall, bei denen die entsprechende Funktion der Benutzeroberfläche nur auf eine einzelne Form angewendet werden kann (z. B. Bearbeiten von Text in einer Form oder Bearbeiten der Punkte einer Freihandform).

Die obigen Richtlinien gelten auch dann, wenn Sie Eigenschaften von Formen festlegen, die Untergruppierungen von sekundären Objekten der ShapeRange-Auflistung darstellen, z. B. das FillFormat-Objekt. Steht das sekundäre Objekt für Operationen, die auf mehreren markierten Objekten in der Benutzeroberfläche ausgeführt werden können, ist es möglich, das Objekt aus einer ShapeRange-Auflistung zurückzugeben und seine Eigenschaften festzulegen.

So können Sie z. B. mit der Fill-Eigenschaft das FillFormat-Objekt zurückgeben, das die Füllungen aller Formen in der ShapeRange-Auflistung darstellt. Wenn Sie anschließend die Eigenschaften dieses FillFormat-Objekts festlegen, wird gleichzeitig dieselbe Eigenschaft für jede einzelne Form in der ShapeRange-Auflistung festgelegt.

Durchlaufen einer Shapes- oder ShapeRange-Auflistung

Selbst wenn ein Vorgang auf der Benutzeroberfläche nicht gleichzeitig für mehrere Formen ausgeführt werden kann, indem diese Formen ausgewählt und anschließend der Befehl angewendet wird, können Sie dennoch die entsprechende Aktion von einem Programm aus ausführen, indem Sie in einer Shape- oder ShapeRange-Auflistung, die die zu bearbeitenden Formen enthält, in einem Schleifendurchlauf die entsprechenden Eigenschaften und Methoden auf die einzelnen Shape-Objekte der Auflistung anwenden.

Im folgenden Beispiel werden alle Shapes myDocument auf durchlaufen und die Vordergrundfarbe für jedes AutoShape-Shape geändert.

Set myDocument = Worksheets(1) 
For Each sh In myDocument.Shapes 
 If sh.Type = msoAutoShape Then 
 sh.Fill.ForeColor.RGB = RGB(255, 0, 0) 
 End If 
Next

Im folgenden Beispiel wird eine ShapeRange-Auflistung gebildet, die alle aktuell markierten Formen im aktiven Fenster enthält, und für jede markierte Form die Vordergrundfarbe festgelegt.

For Each sh in ActiveWindow.Selection.ShapeRange 
 sh.Fill.ForeColor.RGB = RGB(255, 0, 0) 
Next

Ausrichten, Verteilen und Gruppieren von Formen in einem ShapeRange

Verwenden Sie die Align - und Distributed-Methoden , um eine Gruppe von Formen relativ zueinander oder relativ zum Dokument zu positionieren, das sie enthält.

Verwenden Sie die Group-Methode oder die Regroup-Methode , um eine einzelne gruppierte Form aus einer Gruppe von Shapes zu erstellen.

Siehe auch

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.