DeleteShapeNameLike|ワークシート内で指定名を基準にシェイプを全て消去する | Excel VBA
- yuji fukami
- 5 日前
- 読了時間: 2分

<概要 ワークシート内で指定名を基準にシェイプを全て消去>
DeleteShapeNameLikeは、指定した名前を基準にしてワークシート上のシェイプを一括削除するためのExcel VBA用の汎用プロシージャです。
シェイプ名の前方一致(Like比較)を利用しているため、「btn_」「img_」「rect_」などの
命名ルールで管理された図形をまとめて削除できます。
図形を多用する帳票やUI付きシートでは、再描画や初期化処理の一環として不要なシェイプを安全かつ簡潔に削除できる点が特徴です。
Excel VBAでシェイプ管理を行う際の定番処理として再利用しやすい構成になっています。
<実行例>
実行例のサンプルコードは次の通りです
上記の実行サンプルを実行すると、まず Stop ステートメントの位置で処理が一時停止します。
この停止状態でワークシートを確認すると、ランダムな位置に 10個の円(楕円)シェイプ が作成されていることが分かります。
これらの円は、シェイプ名がCircle_1Circle_2Circle_3…のように、「Circle_」から始まる命名規則で付けられています。
つまりこの時点では、ワークシート上に「名前付きで管理された円シェイプが複数存在している」状態です。


DeleteShapeNameLike による一括削除
停止状態を解除して処理を続行すると、次に DeleteShapeNameLike が呼び出されます。
Call DeleteShapeNameLike(Sheet, "Circle")この処理では、第2引数で指定した "Circle" を基準に、シェイプ名が「Circle」で始まるすべてのシェイプを対象として削除が行われます。
その結果、
ワークシート上に作成されていた円シェイプはすべて削除され
セルの内容や、条件に一致しない他のシェイプには一切影響を与えません

実行結果のまとめ
このように DeleteShapeNameLike を使用することで、
命名規則に基づいたシェイプを
安全かつ一括で削除する
といった処理を、非常にシンプルなコードで実現できます。
UI部品や図形を多用するシートにおいて、初期化処理・再描画前のクリーンアップとして非常に有効な汎用プロシージャです。
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。

