VBA-Programmierung in Microsoft Excel

Tutorial: Excel-Beispiele

VBA-Begriff: Shapes-Auflistungsobjekt

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

Eine Auflistung aller Shape-Objekte in dem angegebenen Tabellenblatt. Jedes Shape-Objekt stellt ein Objekt in der Zeichnungsebene dar, wie z. B. eine AutoForm, eine Freihandform, ein OLE-Objekt oder ein Bild.

Anmerkung   Wenn Sie mit einer Teilmenge der Formen in einem Dokument arbeiten möchten, um beispielsweise nur für die AutoFormen im Dokument oder für die markierten Formen eine Aktion durchzuführen, müssen Sie eine ShapeRange-Auflistung erstellen, die die Formen enthält, mit denen Sie arbeiten möchten. Einen Überblick über das Arbeiten mit einer einzigen Form bzw. mit mehreren Formen gleichzeitig finden Sie unter Arbeiten mit Formen (Zeichnungsobjekte).

Verwenden der Shapes-Auflistung

Verwenden Sie die Shapes-Eigenschaft, um die Shapes-Auflistung zurückzugeben. Im folgenden Beispiel werden alle Formen in myDocument markiert.

Set myDocument = Worksheets(1)
myDocument.Shapes.SelectAll

Anmerkung   Wenn Sie für alle Formen in einem Tabellenblatt gleichzeitig eine Aktion durchführen möchten (wie z. B. Löschen oder Festlegen einer Eigenschaft), wählen Sie alle Formen aus, erstellen Sie mit der ShapeRange-Eigenschaft für die Auswahl ein ShapeRange-Objekt, das alle Formen in dem Tabellenblatt enthält, und wenden dann die entsprechende Eigenschaft oder Methode auf das ShapeRange-Objekt an.

Verwenden Sie Shapes(Index), wobei Index den Namen oder die Indexnummer der Form darstellt, um ein einzelnes Shape-Objekt zurückzugeben. Im folgenden Beispiel wird für die erste Form in myDocument der Füllbereich auf eine vordefinierte Form festgelegt.

Set myDocument = Worksheets(1)
myDocument.Shapes(1).Fill.PresetGradient _
    msoGradientHorizontal, 1, msoGradientBrass

Verwenden Sie Shapes.Range(Index), wobei Index den Namen oder die Indexnummer der Form oder eine Matrix mit Namen oder Indexnummern von Formen ist, um eine ShapeRange-Auflistung zurückzugeben, die eine Teilmenge der Shapes-Auflistung darstellt. Im folgenden Beispiel wird das Füllmuster für die erste und dritte Form in myDocument festgelegt.

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

Anmerkungen

Ein ActiveX-Steuerelement in einem Tabellenblatt besitzt zwei Namen: den Namen der Form, die das Steuerelement enthält, und der beim Anzeigen des Arbeitsblatts im Feld Name angezeigt wird, sowie den Codenamen für das Steuerelement, das im Fenster Eigenschaften in der Zelle rechts neben (Name) angezeigt wird. Wenn Sie ein Steuerelement zu einem Arbeitsblatt hinzufügen, stimmen Formname und Codename überein. Wenn der Formname oder der Codename geändert wird, wird der andere nicht automatisch entsprechend geändert.

Sie verwenden den Codenamen eines Steuerelements in den Namen der entsprechenden Ereignisprozeduren. Wenn Sie jedoch ein Steuerelement aus der Shapes- oder der OLEObjects-Auflistung für ein Blatt zurückgeben möchten, müssen Sie den Formnamen und nicht den Codenamen verwenden, um sich auf das Steuerelement anhand des Namens zu beziehen. Nehmen Sie beispielsweise an, dass Sie zu einem Blatt ein Kontrollkästchen hinzufügen, und sowohl der Standardformname als auch der Standardcodename "CheckBox1" lauten. Wenn Sie anschließend den Codenamen des Steuerelements ändern, indem Sie chkFinished im Fenster Eigenschaften neben (Name) eingeben, müssen Sie in den Namen von Ereignisprozeduren "chkFinished" verwenden. Sie müssen jedoch weiterhin "CheckBox1" verwenden, um das Steuerelement aus der Shapes- oder der OLEObject-Auflistung zurückzugeben, wie im folgenden Beispiel gezeigt.

Private Sub chkFinished_Click()
    ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1
End Sub