- ベストアンサー
Excelのシート上のShapeにイベントは設定できる?
タイトル通りですが、Shapeにイベントを発生させることは できるのでしょうか? Click、MouseMove とかですが・・・ よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 私は、うまく言葉では説明できないので、以下のようなサンプルを作ってみました。 ".OnAction" で設定させます。ただ、これが、Sheet1 などのローカルモジュールですと、 マクロ名は、それぞれのシートを指定しないといけません。 '標準モジュール Sub TestShape() 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 = "SubTest1" End With End Sub '-------------------------------- Sub SubTest1() MsgBox "SubTest1マクロが実行されました", 64 End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
表示ーツールバーー図形描画 オートシェイプの例えば四角をクリックして、シートに貼り付ける。 四角部分で右クリックーマクロの登録ー新規作成(か編集)で Sub 四角形1_Click() End Sub が現れます。 直線などでも同じです。 とりあえずClickイベントだけ認められているようです。 それ以上のイベントを作るのは、VBAを越えたウインドウプログラムとAPIとかの熟練スキルがいると思います。 私もわからないが雰囲気だけ下記で http://www.wisdomsoft.jp/dev/api/windows/032
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 せいぜい、右クリックして、マクロの登録で出来る範囲ぐらいだと思います。 言い換えると、Click イベントです。 それ以上のことは、オートシェイプ自体では、一応、無理だと考えたほうがよいようです。 後は、コントロールツール(Active X コントロール)から、Form で使う Image とかをシートに貼り付けるしかないと思います。
お礼
ありがとうございます。 Clickが取れるとわかっただけでもたすかります。 できればオートシェイプでやりたいですね。 ついでになのですが、Shapeは実行時にVBAで配置し ていますがこの実行時にそのClickイベントも同時 に書き込むことは可能なのでしょうか?
お礼
ありがとうございます。 OnActionですか。 メニューをつくるときと同じですね。 非常にたすかりました。 また、よろしくお願いします。