• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで図形同士をコネクタで繋いでいく方法)

VBAで図形同士をコネクタで繋いでいく方法

このQ&Aのポイント
  • VBAを使用して、表から取得した名前の図形をコネクタで順に繋ぐ方法について教えてください。
  • 図形の幅はDistanceの数によって変えられます。
  • 現在は図形の作成やコネクタの繋ぎ方はわかるが、表から名前を取得する方法が分からない状況です。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

Sub pre()   With Worksheets.Add     With .Rectangles       .Add(100, 100, 30, 10).Name = "A"       .Add(200, 200, 30, 10).Name = "B"       .Add(300, 300, 30, 10).Name = "C"       .Add(400, 400, 30, 10).Name = "D"     End With     .Range("A1:C5").Value = [{"name","d","next";"A",10,"B";"B",5,"D";"C",7,"-";"D",15,"C"}]   End With End Sub こんなシートがあったとして、 取り敢えず基準となるA列をLoopして順番に処理する感じです。 セル値を読み取って図形を名前で識別します。 Shape型の変数に受けたほうが解りやすいかと思います。 #セル値には図形の名前を指定するのが前提ですが Sub try()   Dim r As Range   Dim s As Shape   Dim e As Shape   Dim c As Shape   Dim i As Long   With ActiveSheet     For Each r In .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))       On Error Resume Next       Set s = .Shapes(r.Value)       If Not s Is Nothing Then         s.Width = r.Offset(, 1).Value         Set e = .Shapes(r.Offset(, 2).Value)         On Error GoTo 0         If Not e Is Nothing Then           '*****Connector処理           Set c = .Shapes.AddConnector(msoConnectorElbow, 0, 0, 0, 0)           c.Line.EndArrowheadStyle = msoArrowheadTriangle           With c.ConnectorFormat             .BeginConnect s, 4             .EndConnect e, 2           End With           '(最短経路で再接続)           'c.RerouteConnections           '*****           Set e = Nothing         End If         Set s = Nothing       End If     Next   End With End Sub Connectorについての処理はマクロ記録からでも参考になると思います。

komattsu
質問者

お礼

ありがとうございました! 理想通りの動きで助かりました。 細かいアレンジは自力で頑張ってみます。

関連するQ&A