VBA-Programmierung in Microsoft Excel

Tutorial: Excel-Beispiele

VBA-Begriff: Shape-Objekt

Sheets-Auflistung
Shapes-Auflistung (Shape-Objekt)
Mehrere Objekte

Stellt ein Objekt in der Zeichnungsebene dar, z. B. eine AutoForm, ein Freihandobjekt, ein OLE-Objekt oder ein Bild. Das Shape-Objekt ist ein Element der Shapes-Auflistung. Die Shapes-Auflistung enthält alle Formen einer Folie.

Anmerkung   Es gibt drei Objekte, die Formen darstellen: Die Shapes-Auflistung stellt alle Formen eines Dokuments dar; die ShapeRange-Auflistung stellt einen angegebenen Teilbereich der Formen eines Dokuments dar (beispielsweise könnte ein ShapeRange-Objekt die erste und die vierte Form oder alle markierten Formen in einem Dokument darstellen); und das Shape-Objekt stellt eine einzelne Form eines Dokuments dar. Wenn Sie mit mehreren Formen gleichzeitig oder mit Formen innerhalb einer Markierung arbeiten möchten, verwenden Sie eine ShapeRange-Auflistung. Einen Überblick über die Arbeit mit einer einzelnen Form oder mit mehreren Formen gleichzeitig finden Sie unter Arbeiten mit Formen (Zeichnungsobjekte).

Verwenden des Shape-Objekts

Dieser Abschnitt beschreibt:

  • Das Zurückgeben einer bestehenden Form.

  • Das Zurückgeben einer Form innerhalb der Markierung.

  • Das Zurückgeben der Formen, die den Enden einer Verbindung zugeordnet sind.

  • Das Zurückgeben eines neu erstellten Freihandobjekts.

  • Das Zurückgeben einer Form aus einer Gruppe.

  • Das Zurückgeben einer neu gebildeten Gruppe von Formen.

Zurückgeben einer bestehenden Form

Verwenden Sie Shapes(Index), wobei Index der Name oder die Indexnummer der Form ist, um ein Shape-Objekt zurückzugeben, das die eine Form darstellt. Im folgenden Beispiel werden in myDocument das erste Rechteck und das Rechteck "Rechteck1" horizontal gekippt.

Set myDocument = Worksheets(1)
myDocument.Shapes(1).Flip msoFlipHorizontal
myDocument.Shapes("Rectangle 1").Flip msoFlipHorizontal

Jeder Form wird ein Standardname zugewiesen, wenn Sie sie der Shapes-Auflistung hinzufügen. Wenn Sie der Form einen aussagekräftigeren Namen geben möchten, verwenden Sie die Name-Eigenschaft. Im folgenden Beispiel wird in myDocument ein Rechteck eingefügt. Ihm werden der Name "Red Square" sowie Vordergundfarbe und Linienart zugewiesen.

Set myDocument = Worksheets(1)
With myDocument.Shapes.AddShape(msoShapeRectangle, _
        144, 144, 72, 72)
    .Name = "Red Square"
    .Fill.ForeColor.RGB = RGB(255, 0, 0)
    .Line.DashStyle = msoLineDashDot
End With

Zurückgeben einer Form innerhalb der Markierung

Verwenden Sie Selection.ShapeRange(Index), wobei Index der Name oder die Indexnummer der Form ist, um ein Shape-Objekt zurückzugeben, das eine Form innerhalb der Markierung darstellt. Im folgenden Beispiel wird davon ausgegangen, dass mindestens eine Form markiert ist, und die Füllung für die erste Form der Markierung im aktiven Fenster festgelegt.

ActiveWindow.Selection.ShapeRange(1).Fill.ForeColor.RGB = _
    RGB(255, 0, 0)

Zurückgeben der Formen, die den Enden einer Verbindung zugeordnet sind

Um ein Shape-Objekt zurückzugeben, das eine der Formen, die einer Verbindung zugeordnet sind, darstellt, verwenden Sie die BeginConnectedShape- oder die EndConnectedShape-Eigenschaft.

Zurückgeben eines neu erstellten Freihandobjekts

Verwenden Sie die BuildFreeform- und die AddNodes-Methode, um die Geometrie eines neuen Freihandobjekts zu definieren, und die ConvertToShape-Methode, um das Freihandobjekt zu erstellen und das Shape-Objekt, das es darstellt, zurückzugeben.

Zurückgeben einer Form aus einer Gruppe

Verwenden Sie GroupItems(Index), wobei Index Name oder Indexnummer der Form innerhalb der Gruppe ist, um ein Shape-Objekt zurückzugeben, das eine einzelne Form aus einer Gruppe darstellt.

Zurückgeben einer neu gebildeten Gruppe von Formen

Verwenden Sie die Group- oder die Regroup-Methode, um einen Formbereich zu gruppieren und ein einzelnes Shape-Objekt zurückzugeben, das die neu gebildete Gruppe darstellt. Nach dem Bilden einer Gruppe können Sie mit ihr auf die gleiche Weise arbeiten wie mit einer anderen Form.