はじめに
オートシェイプを削除したい場合、Shapesコレクションで削除したいオートシェイプを選択して Delete メソッドを実行します。
オートシェイプの特定は、Select で選択するか、Shapes(番号)、Shapes(シェイプ名) で行います。
最初にオートシェイプの数と名前を取得する方法を紹介します。
オートシェイプの数と名前
オートシェイプの数は、Shapes コレクションの Countプロパティで取得できます。オートシェイプの名前については、Shapes(i).Name などとして取得できます。
Sub myAllShapes()
Dim i As Long
For i = 1 To ActiveSheet.Shapes.Count
Debug.Print ActiveSheet.Shapes(i).Name
Next i
End Sub
尚、上記プログラム以外でも、シート上のオートシェイプを選択すると、右上の名前ボックスに、オートシェイプの名前が日本語名で表示されます。
この名前を使ってもオートシェイプの削除が出来ます。

オートシェイプの削除(単体)
単体のオートシェイプを削除する例を見ていきます。
Shapesはシート指定をしないとコンパイルエラーとなりますので注意してください。
選択されたオートシェイプの削除
選択されたオートシェイプを削除するには ShapeRange を使います。ShapeRange には選択されたオートシェイプが入っています。尚、選択されたオートシェイプが無い場合はエラーとなります。
Sub ShapeDelete1()
Selection.ShapeRange.Delete
End Sub
もし複数のオートシェイプが選択されていて、1番目に選択されたオートシェイプを削除したい場合は以下のようにします。
Sub ShapeDelete1a()
Selection.ShapeRange(1).Delete
End Sub
Shapesの番号指定で削除
Shapesコレクションの要素を数値で指定して削除するには、以下のようにします。一旦オートシェイプを削除するとコレクション内の順番が変化しますので注意してください。
Sub ShapeDelete2()
ActiveSheet.Shapes(1).Delete
End Sub
オートシェイプの名前で削除
オートシェイプの名前で削除したい場合は、以下のようにします。
Sub ShapeDelete3()
ActiveSheet.Shapes("四角形: 角を丸くする 4").Delete
End Sub
先の myAllShapes() で取得したオートシェイプ名と、シートの名前ボックスで表示される名前は異なりますが、どちらを使用しても問題ありません。
全てのオートシェイプを削除
シート上の全てのオートシェイプを削除する方法はいくつかあります。
For文を使って削除
For文を使って全てのオートシェイプを削除する場合は、逆順で削除する点に注意してください。
逆順にしないと削除されるさいオートシェイプの順番がズレるので上手くいきません。
Sub AllShapesDelete1()
For i = ActiveSheet.Shapes.Count To 1 Step -1
ActiveSheet.Shapes(i).Delete
Next
End Sub
For Each In を使って削除
For Each In を使う場合は以下のように書く事ができます。
Sub AllShapesDelete2()
Dim shp
For Each shp In ActiveSheet.Shapes
shp.Delete
Next
End Sub
全て選択してから削除
全てのオートシェイプを選択してから、ShapeRangeでDleleteメソッドを実行すれば、一度に削除する事ができます。
Sub AllShapesDelete3()
ActiveSheet.Shapes.SelectAll
Selection.ShapeRange.Delete
End Sub