プロが教えるわが家の防犯対策術!

タイトル通りですが、Shapeにイベントを発生させることは
できるのでしょうか?

Click、MouseMove とかですが・・・

よろしくお願いします。

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

ありがとうございます。

OnActionですか。
メニューをつくるときと同じですね。

非常にたすかりました。
また、よろしくお願いします。

お礼日時:2008/01/06 11:29

表示ーツールバーー図形描画


オートシェイプの例えば四角をクリックして、シートに貼り付ける。
四角部分で右クリックーマクロの登録ー新規作成(か編集)で
Sub 四角形1_Click()
End Sub
が現れます。
直線などでも同じです。
とりあえずClickイベントだけ認められているようです。
それ以上のイベントを作るのは、VBAを越えたウインドウプログラムとAPIとかの熟練スキルがいると思います。
私もわからないが雰囲気だけ下記で
http://www.wisdomsoft.jp/dev/api/windows/032
    • good
    • 0

こんばんは。



せいぜい、右クリックして、マクロの登録で出来る範囲ぐらいだと思います。
言い換えると、Click イベントです。

それ以上のことは、オートシェイプ自体では、一応、無理だと考えたほうがよいようです。

後は、コントロールツール(Active X コントロール)から、Form で使う Image とかをシートに貼り付けるしかないと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

Clickが取れるとわかっただけでもたすかります。

できればオートシェイプでやりたいですね。


ついでになのですが、Shapeは実行時にVBAで配置し
ていますがこの実行時にそのClickイベントも同時
に書き込むことは可能なのでしょうか?

お礼日時:2008/01/06 01:14

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A