VBAで図形の名前を取得・変更するには、他のオブジェクト同様Nameプロパティを使います。
名前の取得
図形の名前の取得
図形.Name
※図形はShapeオブジェクトまたはShapeRangeコレクションで指定
図形.Name
※図形はShapeオブジェクトまたはShapeRangeコレクションで指定
![vba excel shape name1](https://sunagitsune.com/wp-content/uploads/2021/10/vba-excel-shape-name1.png)
この図形の名前を求め、他のセルに表示してみます。
' vba
Range("C1").Value = ActiveSheet.Shapes("楕円 1").Name
ShapeオブジェクトまたはShapeRangeコレクションの後ろに、Nameを付けることで名前が取得できます。
名前で指定した図形の名前を訊くというのもなんか変ですが、たとえばこういったコードになります。
名前で指定した図形の名前を訊くというのもなんか変ですが、たとえばこういったコードになります。
![vba excel shape name2](https://sunagitsune.com/wp-content/uploads/2021/10/vba-excel-shape-name2.png)
で、実行すると当然「楕円 1」が返る……と思いきや、別の名前が戻されます。
これは2010以降のExcelの仕様で、作成直後の図形は日本語名と英語名のふたつの名前を持ち、どちらでも指定できます(
Nameで取得した場合は英語名が返されます。
これは2010以降のExcelの仕様で、作成直後の図形は日本語名と英語名のふたつの名前を持ち、どちらでも指定できます(
ActiveSheet.Shapes("Oval 1").Name
でも取得できる)。Nameで取得した場合は英語名が返されます。
名前の変更
' vba
ActiveSheet.Shapes(1).Name = "図形1"
図形の名前を変更するには、Nameの後につけたい名前を指定します。
![図形 名前 vba shapes name1](https://sunagitsune.com/wp-content/uploads/2021/10/8180d68c0fe7a83b539e3c6c411bc650.png)
図形の名前が変更され、
![図形 名前 vba shapes name2](https://sunagitsune.com/wp-content/uploads/2021/10/a300037782958c69a7e84cc2617d1ea1.png)
名前を取得しても、同じ名前が表示されます。
ShapeRangeコレクションの場合
![図形 名前 vba shapes name5](https://sunagitsune.com/wp-content/uploads/2021/10/779a536c288aac77566a5e6de50706aa.png)
ShapeRangeコレクションでも可能とは言ったものの、複数図形の名前をまとめて取得しようとすると、そういうことはできない旨エラーが出ます。
' vba
Range("C1").Value = ActiveSheet.Shapes.Range(Array(1)).Name
Rangeプロパティで単一の図形を指定してやれば、問題なく動きます。
すべての図形の名前を変更・取得
![図形 名前 vba shapes name3](https://sunagitsune.com/wp-content/uploads/2021/10/6066d442acc6a5525017748969628caf.png)
図形すべてに名前をまとめてつけたり、名前を取得したい場合は、
' vba
' 図形の数を数え、その回数繰り返す
For i = 1 To ActiveSheet.Shapes.Count
' 名前を変更
ActiveSheet.Shapes(i).Name = "図形" & i
' 名前を書き出し
Cells(i, 3).Value = ActiveSheet.Shapes(i).Name
Next
たとえばこんな感じのコードを書いてやれば、
![図形 名前 vba shapes name4](https://sunagitsune.com/wp-content/uploads/2021/10/717b04d66b8ef5af501c7360a9e4a8eb.png)
まとめて名前を変更したり、図形の一覧を作ることが可能です。
![](https://sunagitsune.com/wp-content/uploads/2021/05/innovation-561388_1280-160x90.jpg)
Excel(エクセル):図形
Excelでは、図形という機能を使うことで四角形や丸、矢印などのオブジェクトをシート状に配置することができます。セルの形状を無視して配置できるので、フローチャートや装飾、注釈などアイデア次第でさまざまな用途に利用できます。
図形作成・操作...
![](https://sunagitsune.com/wp-content/uploads/2018/12/mathematics-1509559_1280-160x90.jpg)
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
![](https://sunagitsune.com/wp-content/uploads/2018/10/gui-2311261_1280.png)
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
コメント