VBAでシートのオートシェイプを全て削除する

Excel操作でシートのオートシェイプを全て削除する方法

Excelの操作でもオートシェイプの全削除は可能ですが、以下のように少し手間が掛かります。

  1. ホームタブ→編集グループ→検索と選択→条件を選択してジャンプ、で、「選択オプション」ダイアログを開く。
  2. ダイアログで「オブジェクト」ラジオボタンを選択してOKボタンを押す。
  3. 全てのオートシェイプが選択されているのでDeleteキーを押す。

VBAでシートのオートシェイプを全て削除する方法

VBAでは1行で全てのオートシェイプの削除が可能です。

同じことをShapeオブジェクトを使って書くことが出来ます。



コード説明

1つ目のコード

どちらのコードも単純ですが、1つ目のコードは分かりやすいですね。

シートの図やオートシェイプやOLEオブジェクトなどは全てDrawingObjectsコレクションに含まれています。Deleteメソッドでクリアされます。

2つ目のコード

2つ目のコードが2行になっているのは、ShapesコレクションにDeleteメソッドがないためSelectAllでDrawingObjectsコレクションを選択し、そこでDeleteしているのが理由です。

MSDNではSelectAllはShapeRangeオブジェクトを作成するとありますが、実際にはDrawingObjectsコレクションになります。

Shapes.SelectAllプロパティは対象となるオートシェイプが一つだけの場合はそのオートシェイプの種類を返しますが、複数の場合はDrawingObjectsコレクションを返します。

どちらのコードでもよいです

上の2つのコードはどちらの書き方も結局はDrawingObjectsオブジェクトを使っていますので、やっていることは全く同じです。

なのでどちらで書いても構いません。

どちらか選ぶとしたら1行で書ける1つ目の方がすっきりはすると思います。

関連記事

サブコンテンツ

このページの先頭へ