• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelのマクロを使用してオートシェイプ図形の色を変えたいのです。)

Excelのマクロを使用してオートシェイプ図形の色を変える方法とは?

このQ&Aのポイント
  • Excelのマクロを使用してオートシェイプ図形の色を変えたい場合、以下の手順を実行します。
  • オートシェイプ図形の名前を変更する方法はありませんが、代わりにオブジェクトのインデックスを使用して操作できます。
  • マクロでクリックしたオートシェイプ図形を特定するためには、Selectionオブジェクトを使用して現在選択されているオブジェクトを取得します。

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

  • ベストアンサー
  • mimeu
  • ベストアンサー率49% (39/79)
回答No.3

質問者さんが何をなさりたいのかによって、答えが全く変わってきますが (^_^) 50ある図形の一部について色を変えたい、その手間を省きたい ということなら F4 キーで繰り返し処理ができます。 手間がかかってもよいから、ご質問の通り動くプログラムを作りたい ということなら、 > オートシェイプ図形の名前が"AutoShape 1"となっていますが、これを変更したい   Worksheets("シート名").Shapes("シェイプ名").Name = "あなたの好きな名前" で変えられます。 ちなみにエクセルが自動でつけてくれた名前を知るには Sub List() Dim シェイプ As Shape   For Each シェイプ In Worksheets("Sheet1").Shapes     Debug.Print シェイプ.TopLeftCell.Address; " "; シェイプ.Name   Next End Sub などとすればよろしいかと思います。こうすればセル位置で確認できます。 なおここで表示される名前は右端に半角空白を一つあけて連番がついているようです。 > ・クリックしたオートシェイプ図形がどれであるかを返す関数 ありません。但し、その関数を自分で作ることはできます。 例えばこんな感じです Sub Shapeの色を変える()   With Worksheets("Sheet1").Shapes(Application.Caller)     .Fill.ForeColor.RGB = RGB(255, 0, 0)     .Line.ForeColor.RGB = RGB(0, 255, 0)   End With End Sub で、その自作関数を図形にリンクしてやる方法は   図形を右クリックして 『マクロの登録』 で登録するか   シェイプ.OnAction プロパティにそのマクロ名を文字列でセットしてやる 試してみましたが、この自作関数はモジュール上に書く必要があるようです。 それと、もちろんですが、50の図形全部についてマクロの登録がひつようです。 マクロを使って登録してもよろしい。 但し、シートにコマンドボタンがあるときは除外しないとエラーになります。 Sub btnShape_Click()   Dim Shp0 As Shape   For Each Shp0 In Worksheets("Sheet1").Shapes     Shp0.OnAction = "Shapeの色を変える"   Next End Sub

ryou4649
質問者

お礼

丁寧でくわしい解説よくわかりました。 しかも、マクロの登録まで一気にできるなんて… ありがとうございました。

その他の回答 (2)

回答No.2

オートシェイプとかグラフの名前は勝手に番号振られて名前つけられるから変えられない気がした。 クリックしたときに動作するならなら、selection.name で名前がわかるんじゃないか? あるいは図形の種類やテキストとかを取得してそれに応じた処理を入れればいいんじゃないの。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

Application.Caller が便利ですよ。 最後に・・・フォームコントロールの利点 http://www.moug.net/tech/exvba/0150072.htm Shapesにも使えます。

ryou4649
質問者

お礼

紹介していただいたページ、本当に参考になります。 ありがとうございました。

関連するQ&A