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などを使って判別します。丸や矢印など削除対象を明確に指定すれば、他のコントロールは残したままワークシートを初期化できます。


コメント