• ベストアンサー

エクセルで図形の位置を知るには

エクセルのシートにオートシェイプで描画した図形の位置を知るにはどうすればいいのでしょうか。 Top=×× Left=×× などを知ることが可能なのでしょうか。

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

  • ベストアンサー
  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.4

ツール→マクロ→VisualBasicEditor でVisualBasicEditorを開きます。 挿入→標準モジュール で標準モジュールを挿入し、以下のコードをコピーしてください。 A、エクセルのワークシートに、図形または"フォーム"のコマンドボタンのいずれかを描画してください。 描画したものを右クリックし、"マクロの登録”で、以下のマクロを選択。 B,エクセルのツールバーにユーザー設定のコマンドボタンを挿入し、以下のマクロを登録。(詳しくはヘルプをご覧ください。) 位置を知りたいオートシェイプを選択した後、上記AまたはBで、マクロを登録したものをクリックすると実行できます。 Sub 図形の位置()  If TypeName(Selection) <> "Range" Then    With Selection      MsgBox .Name & Chr(13) & Chr(13) & _          "Top " & Chr(9) & .Top & Chr(13) & _          "Left " & Chr(9) & .Left    End With  End If End Sub なお、上記のマクロの登録法はエクセル2002を基にしており、バージョンによって若干違うかもしれません。 また、"コントロールツールボックス”のコマンドボタンではうまく作動しません。

chameleon5
質問者

お礼

ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

オブジェクトの捉え方(記述のし方)さえ判れば、TOP 等はプロパティですから 「x=○○.TOP」「x=○○.LEFT」「x=○○.WIDTH」「x=○○.HEIGHT」で捉えられます。ただ4つあるかどうかは調べる必要あり。 例 Sub test02() MsgBox Cells(2, 1).Top MsgBox Cells(3, 2).Left MsgBox Worksheets("sheet1").CommandButton1.Top End Sub

chameleon5
質問者

お礼

ありがとうございました。

  • Taketoshi
  • ベストアンサー率41% (23/56)
回答No.2

ボタンをつくって、以下のマクロを実行してみてください。 Private Type wSize Name As String Top As Long Left As Long Width As Long End Type Private Sub CommandButton1_Click() Dim wShape As Object Dim wSize() As wSize Dim wShapeCnt As Long For Each wShape In ActiveSheet.Shapes If wShape.Type = msoAutoShape or wShape.Type = msoLine Then ReDim Preserve wSize(wShapeCnt) wSize(wShapeCnt).Name = wShape.Name wSize(wShapeCnt).Top = wShape.Top wSize(wShapeCnt).Left = wShape.Left wSize(wShapeCnt).Width = wShape.Width wShapeCnt = wShapeCnt + 1 End If Next End Sub

chameleon5
質問者

お礼

ありがとうございました。

  • TTak
  • ベストアンサー率52% (206/389)
回答No.1

可能です。図形を選択して [ツール]>[マクロ]>[VisualBasicEditor] を開きます。 VisualBasicEditorのメニューから [表示]>[イミディエイトウインドウ] として、イミディエイトウインドウ内に、 ?Selection.ShapeRange.top と入力して enterキー ?Selection.ShapeRange.left と入力して enterキー を押せば、その下に選択されている図形のtopとleft値が表示されます。

chameleon5
質問者

お礼

ありがとうございました。

関連するQ&A