クリックしたshapeを取得する方法

このQ&Aのポイント
  • エクセルVBAで、マクロを登録したShapeをクリックしたときに、そのShapeを取得する方法はありますでしょうか?
  • 1つのワークシート上に、例えばShapes(1)、Shapes(2)があったとします。クリックしたShapeの色を変えたいというとき、Shapes(1)にはShapes(1)の色を変える内容を記述したマクロを、Shapes(2)にはShapes(2)の色を変える内容を記述したマクロを登録すればいいのですが、これをひとつのマクロで行いたいのです。
  • Shapes(1)、Shapes(2)それぞれに同じマクロを登録し、マクロの記述の中でそのときクリックしたShapeを取得できれば、そのプロパティを変更することで可能なのですが、その方法がわかりません。
回答を見る
  • ベストアンサー

クリックしたshapeを取得する方法

エクセルVBAで、マクロを登録したShepeをクリックしたときに、そのShapeを取得する方法はありますでしょうか? 1つのワークシート上に、例えばShapes(1)、Shapes(2)があったとします。クリックしたShapeの色を変えたいというとき、Shapes(1)にはShapes(1)の色を変える内容を記述したマクロを、Shapes(2)にはShapes(2)の色を変える内容を記述したマクロを登録すればいいのですが、これをひとつのマクロで行いたいのです。Shapes(1)、Shapes(2)それぞれに同じマクロを登録し、マクロの記述の中でそのときクリックしたShapeを取得できれば、そのプロパティを変更することで可能なのですが、その方法がわかりません。 ご存知の方がいらっしゃいましたら教えてください。

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

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

こんにちは。 以下のようにすると、クリックしたShapeの名前を取得でしますね。 Sub macro1() MsgBox "クリックしたShapeは" & Application.Caller & "です。" End Sub

Tofu-Yo
質問者

お礼

できました!ありがとうございました!

関連するQ&A

  • Excel マクロ登録されたシェイプをクリックした際にシェイプ名取得する方法

    エクセルのシートの毎行にオートシェイプを貼りつけて、それぞれにマクロを登録します(例えば「行削除」「行挿入」など) シェイプをクリックして起動されるマクロの中で、どのシェイプからマクロが起動されたか(もしくはクリックされたシェイプがあるセルアドレス)を取得する方法があればお教え下さい。よろしくお願いします。 シェイプ名が取得できればIntersectメソッドで行のアドレスが取得できると考えておりますが、色々調べてもどのようにしたらイベントが拾えるかわかりません。 フォームのコマンドボタンを使用すればClickイベントは発生するのですが、コマンドボタンでは行挿入(他のシートから行コピー&行の挿入)を行ったときに一緒に貼り付いてくれないので、可能であればシェイプで実現したいと思っています。

  • excel VBA オートシェイプのテキスト段落

    おはようございます。 【オートシェイプ内のテキスト行間を指定するプロパティ】 オートシェイプ内のテキスト行間を指定するプロパティはありますでしょうか? excel 2007で オートシェイプにテキストをいれた場合、 右クリックすると「段落」という項目がでてきて、 オートシェイプ内のテキストの行間を指定できたのですが、 オートシェイプ内のテキストの行間をVBAで指定することはできるのでしょか? (マクロを登録してもなにも記述されていないので、困っています。) 最終的にはアクティブブックの全シートのオートシェイプの行間を変更する VBAにしたいと思っています。 参考URL等あれば教えていただけませんでしょうか? よろしくお願いいたします。

  • 【EXCEL VBA】オートシェイプをクリックした時にそのオートシェイプの名前を取得したい

    ワークシートに多数(60個程度)のオートシェイプが配置されています。それらにはひとつひとつ「名前」をつけています。(オートシェイプ1とかを1日とかに変更しました) これらのオートシェイプをボタン代わりにマクロを割り当てて実行しようとしています。 そこで、例えば”1日”と名前を定義したオートシェイプがクリックされた時にその名前”1日”を取得する方法が解りません。 説明が下手でうまく伝わっているか心配ですがよろしくお願いします。

  • オートシェイプをクリックしてマクロを実行するには?

    EXCEL97です。 オートシェイプをクリックまたはダブルクリックされたことをひろってVBAが実行されるようにしたいのですができるのでしょうか。 セルであればワークシートのイベントでできるのですが図形でのやり方がわからず困っています。 ちなみに図形には直線、四角形(テキストも)、矢印などが対象になります。 すみませんがご教授お願いします。

  • VBAでオートシェープのテキストを取得の際、ShapesとDrawingObjects?

    エクセル2003です。 オートシェープの基本図形の「額縁」に以下のマクロを登録しました。 マクロを呼び出したオートシェープに表示してあるテキストを取得しようとするものです。 Sub test() x = Application.Caller MsgBox ActiveSheet.Shapes(x).Characters.Text End Sub ところが実行時エラーとなってしまいます。 試行錯誤の結果、ShapesをDrawingObjectsに変えるとうまくいきます。 なぜでしょうか?

  • VBAで別のExcelブックのボタンのマクロ登録

    Excelブック1とExcelブック2があります。 Excelブック1はVBAで 1)Excelブック2を開いて 2)Excelブック1のワークシート(Sheet1)と  モジュールシート(Module1)を  Excelブック2にコピーします。 3)ワークシート(Sheet1)にはコントロール(ボタン)が貼り付けてあって  このボタンをクリックするとモジュールシート(Module1)の中の  Excute_Button()というプロシージャ(マクロ)を呼び出すため  Excelブック1のVBAで  wb.Worksheets("Sheet1").Shapes.Range(Array("Button 1")).Select  Selection.OnAction = "Excute_Button"  と記述してボタンのマクロの登録をします。   (wbはExcelブック2を指しています) 4)Excelブック2を保存して閉じる。 という処理をしています。 この後、Excelブック1を閉じて、 Excelブック2を開いてワークシート(Sheet1)のボタンをクリックすると Excelブック1が開いてしまいます。 Excelブック2のボタンのマクロの登録のマクロ名を見てみると Excelブック1のファイル名!Excute_Button となっています。 Excelブック1のVBAで、ここを単にExcute_Buttonだけにするには どのようにすればよいでしょうか。

  • エクセルVBAで画像を回転させる方法

    エクセル2000です。 ワークシートに貼り付けた図形などのオートシェープは下記のVBAで任意の角度を回転させることが出来ますね。 Sheet1.Shapes("AutoShape 1").IncrementRotation (5) 同様に貼り付けた写真などの画像を回転させるにはどうすればいいのでしょうか? Sheet1.Shapes("Picture 2").IncrementRotation (5) ではまったく回転しませんでした。 どうか教えてください。

  • WORD VBA オートシェイプにマクロを登録したい

    オートシェイプ(四角)をクリックする度に 塗りつぶしの色が白→黒→白というように変わるように したいのですが。(チェックボックス代わりに使いたい) EXCELのオートシェイプには「マクロを登録する」と いう項目がありますが、WORDにはありません。 何かの方法でマクロを登録したいのですが 方法はありますか。 よろしくお願い致します。

  • JavaScriptで書き出したオートシェイプにテキストを挿入したいの

    JavaScriptで書き出したオートシェイプにテキストを挿入したいのですができません。 先日、ExcelのシートにJavaScriptでオートシェイプを書き出す方法を質問した者です。 今度は書き出したオートシェイプにテキストを挿入したいのですが上手くいきません。 どうすれば良いのか教えてください。 ※またもやJavaScriptで解決したいです。 なお、現在悩み中のソースは以下のようです。 ※教えて頂いたソースほとんどそのままですが... function createShapes() { var excel = new ActiveXObject( "Excel.Application" ); excel.visible = true; var sheet = excel.Workbooks.Add().activeSheet; // オートシェイプ挿入:引数の105は吹き出しを示す sheet.Shapes.AddShape(105, 123, 37.5, 151.5, 94.5); // ココでメソッド、プロパティがないとエラーになってしまう...  sheet.Shapes("AutoShape 1").Characters.Text = "ほげほげ"; } よろしくお願いします。

  • シート上のオートシェイプをすべて非表示にしたい

    マクロで ActiveSheet.Shapes.Visible = False と作って見ましたが、だめでした。 シート上のオートシェイプをすべて非表示にしたい時は、マクロではどのようにすれば良いでしょうか? よろしくお願い致します。 Excel2002 WINXP