• ベストアンサー

VBA:オートシェイプの線の長さを知りたい。

エクセル上にオートシェイプで、線を2本引いています。2本の線の長さの比をしるために、それぞれの長さを知りたいです。 引いた線を選択した状態から、その線の長さを知るための関数、できればVBで記述していただけると助かります。宜しくお願いいたします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。こんな感じかと...単位はポイントです。ご注意を。 Sub Sample()   Dim Line1    As Line   Dim Line2    As Line   Dim LineLength1 As Double   Dim LineLength2 As Double   Dim Msg     As String   On Error GoTo ERROR_HANDLER   ' ラインオブジェクト取得   Set Line1 = Selection.Item(1)   Set Line2 = Selection.Item(2)   ' ライン長さ計算   With Line1     LineLength1 = Sqr(.Width ^ 2 + .Height ^ 2)   End With   With Line2     LineLength2 = Sqr(.Width ^ 2 + .Height ^ 2)   End With   ' 結果表示   Msg = ""   Msg = Msg & "Line1:= " & CStr(LineLength1) & " pt" & vbLf   Msg = Msg & "Line2:= " & CStr(LineLength2) & " pt"   MsgBox Msg, vbInformation TERMINATE:   Set Line1 = Nothing   Set Line2 = Nothing   Exit Sub ERROR_HANDLER:   Select Case Err.Number     Case 13, 18, 438: Msg = "2つのラインを選択してから実行します."     Case Else:    Msg = Err.Description   End Select   MsgBox Msg, vbCritical, "ERROR"   Resume TERMINATE End Sub

noname#51465
質問者

お礼

本当に、ありがとうございます。お返事が遅れたことをお詫び申し上げます。実は、緊急であったため投稿後、自分なりに考えました。上記のように綺麗な文ではないのですが、なんとかできました。正直、投稿がくるとも思わず、本当に感謝しています。大変勉強になりました。

関連するQ&A

専門家に質問してみよう