Excel VBAで特定の図形のみ削除する方法:丸や矢印を選択的に消す

Visual Basic

Excelのワークシート上で、丸や矢印など特定の図形だけを削除したい場合、VBAでShapeオブジェクトを使って条件に応じて削除する方法があります。コンボボックスやボタンは残しつつ、ランダムに作られた図形だけを消すことが可能です。

ShapeのTypeで判別する

図形にはTypeプロパティがあり、msoShapeOvalやmsoShapeRightArrowなどで判別できます。これを使って、削除対象の図形だけを消去します。

Sub DeleteShapes()
    Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        Select Case shp.Type
            Case msoShapeOval, msoShapeRightArrow, msoShapeLeftArrow
                shp.Delete
        End Select
    Next shp
End Sub

NameやTagで特定する方法

もし図形にNameやTagを設定している場合、それを条件に削除することもできます。

Sub DeleteTaggedShapes()
    Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        If shp.Tag = "delete" Then
            shp.Delete
        End If
    Next shp
End Sub

ボタンやコンボボックスを残す工夫

ActiveXコントロールやフォームコントロールはTypeが異なるため、上記の方法では削除されません。必要に応じてTypeをチェックして、除外することができます。

まとめ

Excel VBAで特定の図形のみを削除するには、ShapeオブジェクトのType、Name、Tagなどを使って判別します。丸や矢印など削除対象を明確に指定すれば、他のコントロールは残したままワークシートを初期化できます。

コメント

タイトルとURLをコピーしました