• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel shape イベント)

Excel shape イベントに関する質問

このQ&Aのポイント
  • Excelのシートに配置されたshapeオブジェクトをダブルクリックすると、指定した関数を実行する方法を知りたい。
  • アクティブシートのセルに対するイベントではなく、shapeオブジェクトに対するイベントを設定したい。
  • Excel 2010では、shapeオブジェクトに対するイベントを設定する方法がわからない。独自のコンテキストメニュー追加もできないという記事を見た。どのように対応すれば良いか教えてほしい。

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

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは、No1です。 ごめんなさい、ちょっと意味が分からないです。 普通にShapeを選択して右クリックでテキストの編集や切り取り って出来ないのですか? また、「ある関数を動かす」というのはマクロの実行とは違うのでしょうか?

keeeent24
質問者

お礼

ありがとうございました。 なんとか自己解決はしましたが、本当にやりたいことにはたどり着けませんでした。

keeeent24
質問者

補足

ご返信ありがとうございます。 わかりづらい説明申し訳ありません。 今はプログラム開発をお客様向けで行っておりまして、、 なので、No1さんがおっしゃるように、もちろん右クリックでできます。しかし、お客様がより簡単に使いやすくするように、オブジェクト上でダブルクリックした際、編集用のフォームを表示するなどで、そのオブジェクトの編集ができるようにしたい、というのが目指すところです。 なので、ダブルクリックで、ある関数を動かす、すなわち、マクロ実行したいということです。

その他の回答 (2)

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

下記は似たような質問でしょう。 http://okwave.jp/qa/q3653505.html ーー そこのWendyさんの回答を借用(前半)して、できる範囲なら、できるでしょう。 Clickイベント相当のイベントしかできない、ということでしょう。 Wendyさんの回答を借用して Sub TestShape() ActiveSheet.Shapes(1).Delete Dim x1 As Double, y1 As Double Dim x2 As Double, y2 As Double Dim dWidth As Double, dHeight As Double 'アクティブセルから、四角形の設定 With ActiveCell x1 = .Left y1 = .Top End With With ActiveCell.Offset(5, 3) x2 = .Left y2 = .Top End With dWidth = x2 - x1 dHeight = y2 - y1 With ActiveSheet.Shapes.AddShape(msoShapeRectangle, x1, y1, dWidth, dHeight) .OnAction = "" .OnAction = "SubTest1" End With End Sub '-------------------------------- Sub SubTest1() 'MsgBox "SubTest1マクロが実行されました", 64 ActiveSheet.Shapes(1).Width = ActiveSheet.Shapes(1).Width * 1.1 End Sub クリックするごとに四角形が1.1倍になります。 '===== >名前を変えたり削除できるように クリックすると四角形を削除するのは Sub SubTest1() MsgBox "削除します" ActiveSheet.Shapes(1).Delete End Sub シートにオブジェクトを張り付けるのは、邪道扱いのように受け取ります。 MSでは、ユーザードームの上でやってほしいということかも。

keeeent24
質問者

お礼

ありがとうございます。 一応自己解決はしましたが、しっくりこない感じです。 おさわがせしました。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 「ユーザーが任意で名前を変えたり削除」 対象は何ですか? Shapeにマクロを登録するのはダメなのですか?

keeeent24
質問者

補足

ご返信ありがとうござい。 対象はshapeオブジェクト自体です。 ダブルクリックした、shapeオブジェクトのテキストを編集したり、shapeオブジェクト自体を削除したいという意味です。 また、もちろん右クリックでの独自メニュー追加により、編集や削除を行うイベントを作るという仕様でも問題ないです。 OKwaveの使い方がわからず、返信が遅れてしまいました、すみません^^;