- ベストアンサー
VBA:オートシェイプの線の長さを知りたい。
エクセル上にオートシェイプで、線を2本引いています。2本の線の長さの比をしるために、それぞれの長さを知りたいです。 引いた線を選択した状態から、その線の長さを知るための関数、できればVBで記述していただけると助かります。宜しくお願いいたします。
- みんなの回答 (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
お礼
本当に、ありがとうございます。お返事が遅れたことをお詫び申し上げます。実は、緊急であったため投稿後、自分なりに考えました。上記のように綺麗な文ではないのですが、なんとかできました。正直、投稿がくるとも思わず、本当に感謝しています。大変勉強になりました。