Excel/VBAで図形(オートシェイプ)をすべて削除する方法
Excel/VBAで描いたシート上の図形(オートシェイプ)を一発で消す方法です。
[ad#top-1]
図形(オートシェイプ)を一発で消す基本形
以下のコードでシート上にあるすべての図形を消してくれます。
Sub deleteShape() For Each sp In ActiveSheet.Shapes sp.Delete Next sp End Sub
それでは実行してみましょう。以下のように図形を適当に描画し、マクロを実行するためのボタンを設置しました。この状態でボタンを押す(上記マクロを実行する)とどうなるでしょうか?
ありゃ??ボタンまで消えてしまいました。
そうなのです。Shapeオブジェクトはフォームボタンも含まれているのです。
フォームボタンを消さずに図形(オートシェイプ)だけ消す方法
フォームボタンは消したくないので、オートシェイプのみ選択的に消去する方法がこちらです。
Sub deleteShape() For Each sp In ActiveSheet.Shapes If sp.Type = msoAutoShape Then sp.Delete End If Next sp End Sub
ShapeオブジェクトにTypeというプロパティがあって、それを使ってオートシェイプかどうかを判別してくれるんですね。msoAutoShapeがその値となります。
もし、フォームボタンを判別したい場合は、msoFormControlにすればOKです。
[ad#ad-1]
スポンサーリンク