プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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
    • good
    • 4
この回答へのお礼

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

お礼日時:2006/11/14 23:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!