GetShapeByNameLike|ワークシート内で指定の文字列で始まるシェイプをすべて取得して一次元配列に格納して返す | Excel VBA
- yuji fukami
- 6 日前
- 読了時間: 2分

<概要 ワークシート内で指定の文字列で始まるシェイプをすべて取得して一次元配列に格納して返す>
GetShapeByNameLikeは、シート内に配置された図形(シェイプ)を対象に、シェイプ名の先頭文字列を条件として一致するものを一括取得するための汎用プロシージャです。
Excel VBAでは、複数の図形を名前規則で管理するケースが多く、特定の用途で作成した図形群だけをまとめて操作したい場面が頻繁に発生します。
そのような場合に、シェイプ検索を毎回For Eachで個別に記述するのは手間がかかります。
本プロシージャを利用することで、指定した文字列から始まるシェイプを一次元配列として取得でき、後続処理を簡潔かつ安全に記述することが可能になります。
<実行例>
実行例のサンプルコードは次の通りです
実行サンプルを実行すると、まず Stop の位置で一度処理が停止します。
ここまでの処理では、ワークシート上にランダムな位置で円を複数作成しています。


その後、停止を解除して再度実行すると、GetShapeByNameLike を使って「Circle_」で始まるシェイプをすべて取得します。
取得したシェイプは一度配列としてまとめて保持され、その配列を順番に処理することで、各円の書式を一つずつ変更しています。
このサンプルでは、取得した円すべての塗りつぶし色を変更する処理を行っています。

補足(初期化について)
なお、実行サンプルの結果をすべて初期化したい場合は、上部の DeleteShapeNameLike を利用して円を一括削除してください。(詳細は別記事で紹介しています)
DeleteShapeNameLike → https://www.softex-celware.com/post/deleteshapenamelike
<関連コード>
今回の汎用プロシージャは、下記の別で紹介している汎用プロシージャを使用しています。
・PushValueArray1D→ https://www.softex-celware.com/post/pushvaluearray1d
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。


