Arbeiten mit Formen (Zeichnungsobjekten)
Formen, oder Zeichnungsobjekte, werden durch die folgenden drei unterschiedlichen Objekte dargestellt: Shapes-Auflistung, ShapeRange-Auflistung und Shape-Objekt. In der Regel wird die Shapes-Auflistung verwendet, um Formen zu erstellen und alle Formen einer Folie zu durchlaufen. Das Shape-Objekt wird verwendet, um eine einzelne Form zu ändern. Die ShapeRange-Auflistung wird verwendet, um mehrere beliebige Formen auf die gleiche Weise zu ändern, wie es die Benutzeroberfläche bei einer Mehrfachauswahl von Formen ermöglicht.
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.
Set myDocument = ActivePresentation.Slides(1)
myDocument.Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)
Anwenden einer Eigenschaft oder Methode auf mehrere Formen gleichzeitig
Es gibt auf der Benutzeroberfläche einige Operationen, die Sie ausführen können, wenn mehrere Formen ausgewählt sind; Sie können z. B. mehrere Formen auswählen und alle ihre einzelnen Füllungen auf einmal festlegen. Es gibt weitere Operationen, die Sie nur mit einer einzelnen ausgewählten Form ausführen können. Sie können z. B. nur den Text in einer Form 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 eine bestimmte Eigenschaft oder Methode auf jede Form in einer ShapeRange-Auflistung 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.
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 gebildet, der in myDocument
die AutoFormen "Großer Stern" und "Kleiner Stern" enthält, die mit einem frei beweglichen Farbverlauf versehen werden.
Set myDocument = ActivePresentation.Slides(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. Befinden sich mehrere Formen in der Auflistung, wird ein Laufzeitfehler generiert. 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
Auch wenn Sie eine Operation der Benutzeroberfläche nicht gleichzeitig auf mehrere Formen anwenden können, indem Sie die Formen markieren und anschließend einen entsprechenden Befehl verwenden, so haben Sie doch die Möglichkeit, einen gleichwertigen Vorgang programmgesteuert auszuführen, indem Sie die Shapes -Auflistung oder eine ShapeRange -Auflistung durchlaufen, die die gewünschten Formen enthält, und die geeigneten Eigenschaften und Methoden auf die einzelnen Shape -Objekte in der Auflistung anwenden. Im folgenden Beispiel werden alle Formen in myDocument
durchlaufen und Text zu jeder Form hinzugefügt, bei der es sich um eine AutoForm handelt.
Set myDocument = ActivePresentation.Slides(1)
For Each sh In myDocument.Shapes
If sh.Type = msoAutoShape Then
sh.TextFrame.TextRange.InsertAfter " (version 1)"
End If
Next
Im folgenden Beispiel wird eine ShapeRange -Auflistung erstellt, die alle aktuell markierten Formen im aktiven Fenster enthält. Anschließend wird jeder Form in der Auflistung, die Text enthalten kann, derselbe Text zugewiesen:
For Each sh in ActiveWindow.Selection.ShapeRange
If sh.HasTextFrame Then
sh.TextFrame.TextRange = "Initially selected"
End If
Next
Ausrichten, Verteilen und Gruppieren von Formen eines Formbereichs
Mit den Methoden Align und Distribute können Sie eine Reihe von Formen relativ zueinander oder relativ zum Dokument positionieren, das sie enthält. Mit der Group -Methode oder der Regroup -Methode können Sie aus einer Reihe von Formen eine einzelne gruppierte Form bilden.
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.