2つの図形をコネクタでつなぐExcelVBA

Excelで2つの図形をコネクタでつなぐ場合、マウスで、接点に合わせるだけでできますが、それも回数が増えてくるのマウスを操作する手になかなか負荷になってきます。

決まりきってるコネクタならマウス3クリックでできるようにマクロを作成しました。

マクロ

Private Sub CommonConnect(ByVal dashstyle As Integer)
    Dim shp As Shape
    Dim con As ConnectorFormat
    Dim i As Long
    
    On Error GoTo ERR_HNDL
    i = 1
    '2個選択されているかチェック
    If Selection.ShapeRange.Count = 2 Then
        Set shp = ActiveSheet.Shapes.AddConnector( _
            Type:=msoConnectorElbow, _
            BeginX:=0, BeginY:=0, _
            EndX:=99, EndY:=99)
        shp.Line.ForeColor.RGB = RGB(0, 0, 0)
        shp.Line.BeginArrowheadStyle = msoArrowheadTriangle
        shp.Line.EndArrowheadStyle = msoArrowheadTriangle
        shp.Line.dashstyle = dashstyle
        Set con = shp.ConnectorFormat
        con.BeginConnect _
            ConnectedShape:=Selection.ShapeRange(i), _
            ConnectionSite:=4
        con.EndConnect _
            ConnectedShape:=Selection.ShapeRange(i + 1), _
            ConnectionSite:=2
        shp.Select
    Else
        MsgBox "1つのみ、または3個以上選択されています。"
    End If
    Exit Sub
ERR_HNDL:
    MsgBox "図形が選択されていません。"
End Sub

Sub コネクト実線()
    CommonConnect (msoLineSolid)
End Sub

Sub コネクト破線()
    CommonConnect (msoLineDash)
End Sub

マクロ動作

2つの図形を選択して、マクロを実行すると・・・

2つの図形をコネクタでつなぎます。

MsoLineDashStyle 列挙

CommonConnect ()の引数について公式はこちら

今回のマクロで使用したのは以下の通り。

msoLineSolid実線
msoLineDash破線

ConnectionSite

どこにつなぐか。公式はこちら

私は調べるよりも値変えてみて確認してしまいます。

ExcelVBA逆引き大全 600の極意 Office365/2019/2016/2013/2010対応

新品価格
¥2,860から
(2022/1/29 21:33時点)

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA