- ベストアンサー
Excelのマクロを使用してオートシェイプ図形の色を変える方法とは?
- Excelのマクロを使用してオートシェイプ図形の色を変えたい場合、以下の手順を実行します。
- オートシェイプ図形の名前を変更する方法はありませんが、代わりにオブジェクトのインデックスを使用して操作できます。
- マクロでクリックしたオートシェイプ図形を特定するためには、Selectionオブジェクトを使用して現在選択されているオブジェクトを取得します。
- みんなの回答 (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
その他の回答 (2)
- aacocktail
- ベストアンサー率20% (7/34)
オートシェイプとかグラフの名前は勝手に番号振られて名前つけられるから変えられない気がした。 クリックしたときに動作するならなら、selection.name で名前がわかるんじゃないか? あるいは図形の種類やテキストとかを取得してそれに応じた処理を入れればいいんじゃないの。
- xls88
- ベストアンサー率56% (669/1189)
Application.Caller が便利ですよ。 最後に・・・フォームコントロールの利点 http://www.moug.net/tech/exvba/0150072.htm Shapesにも使えます。
お礼
紹介していただいたページ、本当に参考になります。 ありがとうございました。
お礼
丁寧でくわしい解説よくわかりました。 しかも、マクロの登録まで一気にできるなんて… ありがとうございました。