VBAで図形を削除する方法

2022年12月29日

VBAの図って、セル(Range)と比べると扱い方が難しいですよね。

そんな扱いづらい図ですが、操作方法は限られているのでコードを数パターン覚えておけば後は応用が利きます。(基本的にShapesコレクションからShapeオブジェクトを取り出す)

今回は図を削除する方法を紹介します。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

全ての図を削除する方法

Sub AllShpDelete()
'ActiveSheet上の図を全て削除
    Dim oneShp As Variant
    For Each oneShp In ActiveSheet.Shapes
        oneShp.Delete
    Next
End Sub

まずはActiveSheet上の全ての図を削除する方法です。

Shapeコレクション(ActiveSheet.Shapes)から1つの図(oneShp)を取り出して、それを順番に削除(Delete)します。

特定の図のみ削除する方法

Sub SomeShpDelete()
'ActiveSheet上のテキストボックスを全て削除
    Dim oneShp As Variant
    For Each oneShp In ActiveSheet.Shapes
        If oneShp.Type = msoTextBox Then oneShp.Delete
    Next
End Sub

さらにTypeプロパティを組み合わせることで、特定の図のみを削除することができます。
上のプログラムではテキストボックスのみを削除します。

msoTextBoxのところを他の定数に差し替えることで、削除する図の種類を指定することができるので、自分が消したい図に応じて変更してみてください。

定数種類
msoShapeTypeMixed-2
msoAutoShape図形・オートシェイプ1
msoCallout吹き出し2
msoChartグラフ3
msoCommentコメント4
msoFreeformフリーフォーム5
msoGroupグループ化された図形6
msoEmbeddedOLEObject埋め込みOLEオブジェクト7
msoFormControlフォームコントロール8
msoLine9
msoLinkedOLEObjectリンクOLEオブジェクト10
msoLinkedPictureリンク画像11
msoOLEControlObjectActiveXコントロール12
msoPicture画像13
msoPlaceholderプレースホルダー14
msoTextEffectテキスト効果15
msoMediaメディア16
msoTextBoxテキストボックス17
msoScriptAnchorスクリプトアンカー18
msoTable19
msoCanvas描画キャンバス20
msoDiagram図表21
msoInkインク22
msoInkCommentインクコメント23
msoSmartArtスマートアート24
msoSlicerスライサー25
msoWebVideoWebビデオ26
msoContentAppコンテンツアドイン27
msoGraphicグラフィック28
msoLinkedGraphicリンクグラフィック29
mso3DModel3Dモデル30
msoLinked3DModelリンク3Dモデル31

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2023/03/24 15:53:51時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい