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]
スポンサーリンク

