Excel VBA

【Excel VBA】【マクロ】【Tips】シート上の図形(オートシェイプ)をすべて削除するマクロ

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回は図形削除のマクロです!

シート上の図形をすべて削除するマクロ

図形の操作ってなんかややこしいんですよね、、
ただ!図形の削除に関しては割とシンプルでわかりやすいです。
3種類紹介します!

コード①図形を全選択して削除

Sub DeleteAllShapes1()

    ActiveSheet.Shapes.SelectAll
    Selection.ShapeRange.Delete
    
End Sub

コードの説明

アクティブシート(選択されているシート)上のすべての図形を選択し、
選択されている図形を削除します。

コード②「For Each」を使って削除

Sub DeleteAllShapes2()

    Dim s As Shape
    
    For Each s In ActiveSheet.Shapes
        s.Delete
    Next s

End Sub

コードの説明

Shape型の変数を宣言します。
シート上の図形を順にループしていき、図形を削除します。

コード③「Shapes.Count」を使って削除

Sub DeleteAllShapes3()

    Dim i As Long
    
    For i = ActiveSheet.Shapes.Count To 1 Step -1
        ActiveSheet.Shapes(i).Delete
    Next

End Sub

コードの説明

カウンタ用の変数を宣言します。
シート上の図形を後ろから順にループしていき、図形を削除します。
「For i = 1 To ActiveSheet.Shapes.Count」
としても一見うまくいきそうですが、
図形が削除されると番号がずれてしまい、中途半端に削除される上に
「指定したコレクションに対するインデックスが境界を超えています」というエラーがでます!

さいごに

いかがでしたでしょうか。
ただ図形を全削除するのであれば①のやり方が良いと思います。
②と③は、IF文を追加して条件を付けられるので、この条件に当てはまる図形のみ削除、
というふうに制御をかけられます。
ぜひ使ってみてください!

Lenoco

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です