VBA-Programmierung in Microsoft Excel

Tutorial: Excel-Beispiele

VBA-Begriff: ConnectorFormat-Objekt

Shapes-Auflistung (Shape-Objekt)
ConnectorFormat-Objekt

Enthält Eigenschaften und Methoden, die für Verbindungen gelten. Eine Verbindung ist eine Linie, die zwei andere Formen an Punkten, den Verbindungspunkten, anfügt. Wenn Sie verbundene Formen neu anordnen, wird die Geometrie der Verbindung automatisch so angepasst, dass die Formen verbunden bleiben.

Verwenden des ConnectorFormat-Objekts

Verwenden Sie die ConnectorFormat-Eigenschaft, um ein ConnectorFormat-Objekt zurückzugeben. Mit Hilfe der BeginConnect- und der EndConnect-Methoden können Sie die Enden der Verbindung anderen Formen im Dokument zuordnen. Verwenden Sie die RerouteConnections-Methode, um automatisch den kürzesten Verbindungsweg zwischen den beiden verbundenen Formen zu finden. Mit Hilfe der Connector-Eigenschaft können Sie feststellen, ob es sich bei der Form um eine Verbindung handelt.

Beachten Sie, dass beim Hinzufügen einer Verbindung in die Shapes-Auflistung eine Größe und eine Position zugewiesen wird; beide werden jedoch automatisch angepasst, wenn Sie Anfang und Ende der Verbindung anderen Formen der Auflistung zuordnen. Deshalb sind beim Zuordnen einer Verbindung an andere Dokumente die für Größe und Position festgelegten Anfangswerte ohne Bedeutung. Ebenso geben Sie beim Zuordnen einer Verbindung den Verbindungspunkt auf einer Form an, an dem die Verbindung angefügt wird. Wenn Sie jedoch nach dem Anfügen der Verbindung die RerouteConnections-Methode verwenden, können sich die Verbindungspunkte ändern, und Ihre ursprünglich angegebenen Werte für die Verbindungspunkte bleiben ohne Bedeutung.

Im folgenden Beispiel werden in myDocument zwei Rechtecke eingefügt und durch eine gekrümmte Verbindung verbunden.

Set myDocument = Worksheets(1)
Set s = myDocument.Shapes
Set firstRect = s.AddShape(msoShapeRectangle, 100, 50, 200, 100)
Set secondRect = s.AddShape(msoShapeRectangle, 300, 300, 200, 100)
Setc c = s.AddConnector(msoConnectorCurve, 0, 0, 0, 0)
With c.ConnectorFormat
    .BeginConnect ConnectedShape:=firstRect, ConnectionSite:=1
    .EndConnect ConnectedShape:=secondRect, ConnectionSite:=1
    c.RerouteConnections
End With

Anmerkungen

Verbindungspunkte werden allgemein nach den in der folgenden Tabelle aufgeführten Regeln nummeriert.

Formart Nummerierungsart der Verbindungspunkte
AutoFormen, WordArt, Bilder und OLE-Objekte Die Verbindungspunkte werden von oben gegen den Uhrzeigersinn nummeriert.
Freihandobjekte Die Verbindungspunkte sind die Scheitelpunkte und entsprechen den Scheitelpunktnummern.

Um in einer komplexen Form herauszufinden, welche Nummer welchem Verbindungspunkt entspricht, können Sie mit der Form bei eingeschaltetem Makro-Recorder experimentieren und anschließend den aufgezeichneten Code untersuchen. Sie können auch eine Form erstellen, sie markieren und das folgende Beispiel ausführen. Der Code nummeriert jeden Verbindungsort und ordnet ihm eine Verbindung zu.

Set mainshape = ActiveWindow.Selection.ShapeRange(1)
With mainshape
    bx = .Left + .Width + 50
    by = .Top + .Height + 50
End With
With ActiveSheet
    For j = 1 To mainshape.ConnectionSiteCount
        With .Shapes.AddConnector(msoConnectorStraight, _
                bx, by, bx + 50, by + 50)
            .ConnectorFormat.EndConnect mainshape, j
            .ConnectorFormat.Type = msoConnectorElbow
            .Line.ForeColor.RGB = RGB(255, 0, 0)
            l = .Left
            t = .Top
        End With
        With .Shapes.AddTextbox(msoTextOrientationHorizontal, _
                l, t, 36, 14)
            .Fill.Visible = False
            .Line.Visible = False
            .TextFrame.Characters.Text = j
        End With
    Next j
End With