Excel VBA質問箱 IV

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

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


6958 / 13644 ツリー ←次へ | 前へ→

【42087】矢印の終点座標 アーバン 06/8/31(木) 13:34 質問[未読]
【42090】Re:矢印の終点座標 りん 06/8/31(木) 14:46 回答[未読]
【42092】Re:矢印の終点座標 アーバン 06/8/31(木) 15:45 お礼[未読]

【42087】矢印の終点座標
質問  アーバン  - 06/8/31(木) 13:34 -

引用なし
パスワード
   お世話になります。下記で困っております。
シート上に矢印シェイプを貼付けて常に終点座標位置に
対比した文字シェイプも貼付け、それを必要数作成する
ことをしようとしております。

しかし、始点終点の座標を計算する場合、矩形的に考え
ますと範囲でしかない為、矢印の向き(又は終点)が、
常に右上から左下ではないので、始点終点どちらかが
わかりません。(left,top,width,heightから計算)

他のプロパティで始点終点の形状などは指定できること
から、どちらが始点か,又は,直接的に終点の座標を知る方法
はありますでしょうか?
調べてみましたが、行き詰まりましたので、助けて下さい。
尚、図示の為に使用するので、図示の逆側に文字シェイプ
が貼付できれば、まったく別の手法でもかまいませんので、
ありますれば助言もお願いします。

【42090】Re:矢印の終点座標
回答  りん E-MAIL  - 06/8/31(木) 14:46 -

引用なし
パスワード
    アーバン さん、こんにちわ。

>他のプロパティで始点終点の形状などは指定できること
>から、どちらが始点か,又は,直接的に終点の座標を知る方法
>はありますでしょうか?

始点及び終点の情報は(Shape)Nodesで取得できます。

アクティブなシート上の全ての図形について始終点を表示する例です。

Sub test()
  Dim msg As String, sh As Shape, nd As ShapeNodes
  '
  For Each sh In Application.ActiveSheet.Shapes
    On Error Resume Next
    Set nd = sh.Nodes
    On Error GoTo 0
    If nd Is Nothing Then
      msg = "多角形とか?"
    Else
      '1が始点
      With nd.Item(1)
        msg = "始点 X : " & .Points(1, 1) & " Y : " & .Points(1, 2)
      End With
      msg = msg & vbCrLf & "   〜" & vbCrLf
      With nd.Item(nd.Count)
        msg = msg & "終点 X : " & .Points(1, 1) & " Y : " & .Points(1, 2)
      End With
    End If
    MsgBox msg, vbInformation, sh.Name
    Set nd = Nothing
  Next
End Sub
こんな感じです。
ShapeNodesのプロパティ等についてはヘルプを参照してください。

【42092】Re:矢印の終点座標
お礼  アーバン  - 06/8/31(木) 15:45 -

引用なし
パスワード
   ▼りん さん こんにちわ。度々、お世話になっております。
なるほど、Pointsプロパティというものがあったのですね。
幾つか多角形も含め貼付して、下記コードをやってみました。
たしかに、右上から左下へ引いたものでも、これであれば
終点座標を取得できました。

別件で教示いただいた標準類の貼付た絵図に今度は図示を行う
段階をしていて行き詰まったのでした。
既に貼付済みの特定の矢印を図示したい場所へ配置しボタンで
新規の線と文字シェイプを貼付ていく作業に使用します。
今度も助けていただきまして、ありがとうございました。

>
>>他のプロパティで始点終点の形状などは指定できること
>>から、どちらが始点か,又は,直接的に終点の座標を知る方法
>>はありますでしょうか?
>
>始点及び終点の情報は(Shape)Nodesで取得できます。
>
>アクティブなシート上の全ての図形について始終点を表示する例です。
>
>Sub test()
>  Dim msg As String, sh As Shape, nd As ShapeNodes
>  '
>  For Each sh In Application.ActiveSheet.Shapes
>    On Error Resume Next
>    Set nd = sh.Nodes
>    On Error GoTo 0
>    If nd Is Nothing Then
>      msg = "多角形とか?"
>    Else
>      '1が始点
>      With nd.Item(1)
>        msg = "始点 X : " & .Points(1, 1) & " Y : " & .Points(1, 2)
>      End With
>      msg = msg & vbCrLf & "   〜" & vbCrLf
>      With nd.Item(nd.Count)
>        msg = msg & "終点 X : " & .Points(1, 1) & " Y : " & .Points(1, 2)
>      End With
>    End If
>    MsgBox msg, vbInformation, sh.Name
>    Set nd = Nothing
>  Next
>End Sub
>こんな感じです。
>ShapeNodesのプロパティ等についてはヘルプを参照してください。

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