- ベストアンサー
エクセルで図形の位置を知るには
エクセルのシートにオートシェイプで描画した図形の位置を知るにはどうすればいいのでしょうか。 Top=×× Left=×× などを知ることが可能なのでしょうか。
- みんなの回答 (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を基にしており、バージョンによって若干違うかもしれません。 また、"コントロールツールボックス”のコマンドボタンではうまく作動しません。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
オブジェクトの捉え方(記述のし方)さえ判れば、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
お礼
ありがとうございました。
- Taketoshi
- ベストアンサー率41% (23/56)
ボタンをつくって、以下のマクロを実行してみてください。 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
お礼
ありがとうございました。
- TTak
- ベストアンサー率52% (206/389)
可能です。図形を選択して [ツール]>[マクロ]>[VisualBasicEditor] を開きます。 VisualBasicEditorのメニューから [表示]>[イミディエイトウインドウ] として、イミディエイトウインドウ内に、 ?Selection.ShapeRange.top と入力して enterキー ?Selection.ShapeRange.left と入力して enterキー を押せば、その下に選択されている図形のtopとleft値が表示されます。
お礼
ありがとうございました。
お礼
ありがとうございました。