Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9601 / 13646 ツリー ←次へ | 前へ→

【26481】二つの図形をコネクタで結ぶ #5 05/7/6(水) 18:45 質問[未読]
【26484】Re:二つの図形をコネクタで結ぶ りん 05/7/6(水) 21:00 回答[未読]

【26481】二つの図形をコネクタで結ぶ
質問  #5  - 05/7/6(水) 18:45 -

引用なし
パスワード
   はじめまして。

質問したいことが二つほどあります。
二つといっても二つの質問はリンクしているのですが。
一つは図形の座標の取得について。
もう一つは二つの図形をコネクタで結ぶにはどうしたらよいかということです。

まずエクセル上にいくつか図形、実行ボタンを描きます。
その後にボタンを押して指定した二つの図形を選びその二つの図形を線で結びたいと思っているのですが、VBAではどのようにコードをかけばよいのでしょうか。教えてください。

自分のイメージでは選択した図形の座標を取得してその座標にあわせて線を描くというイメージがあるのですが・・。

【26484】Re:二つの図形をコネクタで結ぶ
回答  りん E-MAIL  - 05/7/6(水) 21:00 -

引用なし
パスワード
   #5 さん、こんばんわ。

>一つは図形の座標の取得について。
図形の座標は、Topプロパティ、 Leftプロパティ
セル位置では、TopLeftCellプロパティ、BottomRightCellプロパティで判断できます。
使い方はヘルプや過去ログにあると思います。

>その後にボタンを押して指定した二つの図形を選びその二つの図形を線で結びたいと思っているのですが、VBAではどのようにコードをかけばよいのでしょうか。教えてください。

図形を2つ選択してから実行すると最短距離で結びます。
Sub test()
  Dim sr As ShapeRange, sh As Shape
  '選択してるものをShapeRangeに格納
  On Error Resume Next
  Set sr = Selection.ShapeRange
  On Error GoTo 0
  '分岐(2つ図形を選択している状態以外は無視)
  If Not sr Is Nothing Then
   If sr.Count = 2 Then
     Set sh = ActiveSheet.Shapes. _
      AddConnector(msoConnectorElbow, 0, 0, 10, 10) '適当に追加
     With sh.ConnectorFormat
       .BeginConnect sr.Item(1), 1
       .EndConnect sr.Item(2), 1
     End With
     sh.RerouteConnections '最短距離で結ぶ
   Else
     '図形を2個以外選択
     MsgBox sr.Count & "個", vbExclamation, "Shapeを2つ選んで実行"
   End If
  Else
   '図形を選択していない
   MsgBox TypeName(Selection), vbExclamation, "Shapeを2つ選んで実行"
  End If
  Set sr = Nothing
  Set sh = Nothing
End Sub

こんな感じです。

9601 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free