オートシェイプ・画像を削除する2010.06.09
シート上のオートシェイプ・ワードアートや画像オブジェクトが、非表示やサイズ「0」になっていると、見つけることが困難です。それらをまとめて消去したい時は、次のコードを使用します。アクティブシート上のオートシェイプや画像オブジェクトを全て消去します。
【お薦め】マクロ・プロシージャを管理する無料のツール!
Excelマクロ管理ツール
Excelマクロ管理ツール
サンプルコード
コードの貼り付け場所 VBAコードをカラーで印刷・Web掲載するためのツールはこちら
Sub Shapes_Delete() 'アクティブシート上にある全ての 'オートシェイプや画像オブジェクトを消去する Dim objShape As Shape With Application .ScreenUpdating = False For Each objShape In ActiveSheet.Shapes objShape.Delete Next .ScreenUpdating = True End With End Sub
上記コードはオートシェイプや画像オブジェクトなど全てのShapeオブジェクトが対象ですが、その中で特定のオブジェクトのみを消去する場合は、Typeプロパティで分岐します。TypeName関数で分岐する方法もあります。
次のコードはTypeプロパティで分岐し、画像のみを消去します。
Sub Images_Delete() 'アクティブシート上にある全ての画像オブジェクトを消去する Dim objShape As Shape With Application .ScreenUpdating = False For Each objShape In ActiveSheet.Shapes If objShape.Type = msoPicture Then objShape.Delete Next .ScreenUpdating = True End With End Sub
オートシェイプを対象にする場合は、msoPicture を msoAutoShape に変更します。