大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、図形(オートシェイプ)を削除する方法について、ご紹介します。図形の削除は、「.Delete」を使います。「For Each」を使って、図形を削除すると、条件を指定できたりと、かなり便利です。具体的に解説していきます。

はじめに

この記事では、図形(オートシェイプ)を削除する方法について、ご紹介します。

図形を削除するには、「.Delete」を使います。

「For Each」を使うと、簡単に、全ての図形を削除することができます。

さらに、条件を指定して、図形を削除することもできますので、かなり便利です。

図形の扱いになれていきましょう。

では、図形(オートシェイプ)を削除する方法について、解説していきます。

この記事で紹介すること

  • 図形(オートシェイプ)を削除する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

図形(オートシェイプ)を削除するVBAコードをまとめました。

VBAコードだけを確認したい場合に、ご活用ください。

'選択した図形を削除
Selection.ShapeRange.Delete
    
'指定した図形を削除
ActiveSheet.Shapes("四角形: 角を丸くする 1").Delete

'複数の図形を削除
ActiveSheet.Shapes("四角形: 角を丸くする 1").Select
ActiveSheet.Shapes("四角形: 角を丸くする 2").Select Replace:=False
ActiveSheet.Shapes("四角形: 角を丸くする 3").Select Replace:=False
Selection.ShapeRange.Delete

'全削除①
ActiveSheet.Shapes.SelectAll 'シート内の図形を全選択
Selection.ShapeRange.Delete '選択した図形を削除

'全削除②
For i = ActiveSheet.Shapes.Count To 1 Step -1
    ActiveSheet.Shapes(i).Delete '図形を削除
Next

'全削除③
For Each a In ActiveSheet.Shapes
    a.Delete '図形を削除
Next

では、解説していきます。

VBAで図形(オートシェイプ)を削除する

図形(オートシェイプ)を削除するには、「.Delete」を使うとできます。

.Deleteを使う

選択した図形を削除するには、次のように入力します。

  • Selection.ShapeRange.Delete

指定した図形を削除するには、図形の名前を使って、次のように入力します。

  • Activesheet.Shapes(図形の名前).Delete

という感じです。

では、やってみましょう

選択した図形を削除

選択した図形を削除してみます。

VBAコードは、こんな感じです。

Sub TEST1()
    
    '選択した図形を削除
    Selection.ShapeRange.Delete
    
End Sub

セルに図形を作成しておきました。

削除する図形を選択

セルに図形を作成しておいた

では、実行してみます。

選択した図形を削除

選択した図形を削除した結果

選択した図形を削除できました。

指定した図形を削除

次は、指定した図形を削除してみます。

VBAコードは、こんな感じです。

Sub TEST2()
    
    '指定した図形を削除
    ActiveSheet.Shapes("四角形: 角を丸くする 1").Delete
    
End Sub

セルに図形を作成しておきました。

図形の名前は、「"四角形: 角を丸くする 1"」となっています。

図形を用意

セルに図形を作成しておいた

では、実行してみます。

指定した図形を削除

指定した図形を削除した結果

指定した図形を削除できました。

こんな感じで、図形を削除することができます。

VBAで複数の図形(オートシェイプ)を削除する

次は、複数の図形を削除してみます。

「Replace:=False」を使う

複数の図形を削除するには、Selectの引数に、「Replace:=False」を入力して、複数の図形を選択した後に、削除という感じです。

VBAコードは、こんな感じになります。

Sub TEST3()
    
    '図形を選択
    ActiveSheet.Shapes("四角形: 角を丸くする 1").Select
    '図形を追加で選択
    ActiveSheet.Shapes("四角形: 角を丸くする 2").Select Replace:=False
    '図形を追加で選択
    ActiveSheet.Shapes("四角形: 角を丸くする 3").Select Replace:=False
    
    '選択した図形を削除
    Selection.ShapeRange.Delete
    
End Sub

複数の図形を用意しました。

複数の図形を用意

複数の図形を用意

では、VBAコードを実行してみます。

複数の図形を削除

複数の図形を削除した結果

複数の図形を削除できました。

複数の図形を削除する場合は、「Replace:=False」を使うと便利です。

VBAでシート内の図形を全て削除する

シート内にある図形を、全て削除する方法について、解説します。

やり方は、3パターンあります。

  • 「SelectAll」を使って削除
  • 「Shapes.Count」を使って削除
  • 「For Each」を使って削除

という感じです。

「For Each」を使う方法が、簡単で応用が利くので、便利です。

では、それぞれの方法で、図形を削除してみます。

「SelectAll」を使って削除

シート内の全ての図形を、「SelectAll」を使って、削除してみます。

VBAコードは、こんな感じになります。

Sub TEST4()
    
    'シート内の図形を全選択
    ActiveSheet.Shapes.SelectAll
    '選択した図形を削除
    Selection.ShapeRange.Delete
    
End Sub

シート内に、複数の図形を用意しました。

複数の図形を用意

シート内に複数の図形を用意

では、実行してみます。

すべての図形が選択されます。

SelectAllで全ての図形を選択

SelectAllで全ての図形を選択

選択した図形が削除されます。

選択した図形を削除

SelectAllを使ってシート内の全ての図形を削除した結果

シート内の全ての図形を削除できました。

「Shapes.Count」を使って削除

次は、シート内の全ての図形を、「Shapes.Count」を使って、削除してみます。

VBAコードは、こんな感じになります。

Sub TEST5()
    
    'シート内の図形を後ろからループ
    For i = ActiveSheet.Shapes.Count To 1 Step -1
        ActiveSheet.Shapes(i).Delete '図形を削除
    Next
        
End Sub

ポイントは、後ろからループするところですね。

削除していくと、図形の番号が、変わっちゃうので、後ろからループしてあげます。

シート内に、複数の図形を用意しました。

複数の図形を用意

シート内に複数の図形を用意

では、実行してみます。

全ての図形を削除

Shapes.Countを使ってシート内の全ての図形を削除した結果

シート内の全ての図形を削除できました。

「For Each」を使って削除

最後は、シート内の全ての図形を、「For Each」を使って、削除してみます。

「For Each」を使うと、条件を指定することができたり、応用が利きますので、便利です。

VBAコードは、こんな感じになります。

Sub TEST6()
    
    'シート内の図形をループ
    For Each a In ActiveSheet.Shapes
        a.Delete '図形を削除
    Next
        
End Sub

シート内に、複数の図形を用意しました。

複数の図形を用意

シート内に複数の図形を用意

では、実行してみます。

全ての図形を削除

For Eachを使ってシート内の全ての図形を削除した結果

シート内の全ての図形を削除できました。

こんな感じで、全ての図形を削除することができます。

VBAで条件を指定して図形を削除

「For Each」を使う方法で、条件を指定して図形を削除する方法について、やってみます。

テキストに「1」が含まれる図形だけを削除

図形のテキストに、「1」が含まれる図形だけを、削除してみます。

VBAコードは、こんな感じです。

Sub TEST7()
    
    'シート内の図形をループ
    For Each a In ActiveSheet.Shapes
        'オートシェイプの場合
        If a.Type = 1 Then
            '図形のテキストに「1」が含まれているかを判定
            If InStr(a.TextFrame.Characters.Text, "1") > 0 Then
                a.Delete '図形を削除
            End If
        End If
    Next
        
End Sub

オートシェイプかを「If a.Type = 1 Then」で、判定します。

テキストに「1」が含まれているかを、「If InStr(a.TextFrame.Characters.Text, "1") > 0 Then」を使って、判定しています。

条件が成立すると、図形を削除、という感じです。

シートに複数の図形を用意して、テキストを入力しておきました。

複数の図形にテキストを入力しておく

複数の図形を用意して、テキストを入力

では、実行してみます。

「1」が含まれる図形だけを削除

テキストに「1」が含まれる図形だけを削除

テキストに「1」が含まれる図形だけを、削除できました。

こんな感じで、「For Each」を使うと、条件を指定することができます。

ちょっと応用

ちょっと応用で、選択したセル範囲の、図形を削除する、というのをやってみます。

選択したセル範囲の図形を削除

選択したセル範囲の、図形を削除するVBAコードは、こんな感じになります。

Sub TEST8()
    
    '選択したセル範囲をオブジェクトに格納
    Dim Slc
    Set Slc = Selection
    
    Dim Shp
    'シート内の図形をループ
    For Each Shp In ActiveSheet.Shapes
        '図形の左上と右下のセル範囲を格納
        Set a = Range(Shp.TopLeftCell, Shp.BottomRightCell)
        '図形のセル範囲と、選択したセルの範囲が、重なっているかを判定
        If Not Intersect(a, Slc) Is Nothing Then
            Shp.Delete '図形を削除
        End If
    Next
    
End Sub

手順としては、

  • ①選択したセル範囲を取得
  • ②全ての図形をループ
  • ③「図形のセル範囲」と「選択したセル範囲」に共有するセル範囲があるかを判定
  • ④共有するセル範囲がある場合に図形を削除
  • ⑤次の図形に進む

という感じです。

シートに図形を作成しておきました。

適当にセルを選択しています。

セルを選択する

セルを任意に選択しておく

では、実行してみます。

選択したセル範囲にある図形を削除

選択したセル範囲にある図形を削除した結果

選択したセル範囲にある図形を削除できました。

特定の図形だけを、削除したい場合に使えます。

ただ、Excelの機能で、オブジェクトの選択を使った方が早い気もしてきました。

おわりに

この記事では、図形(オートシェイプ)を削除する方法について、ご紹介しました。

図形を削除するには、「.Delete」を使います。

「For Each」を使うと、簡単に、全ての図形を削除することができます。

さらに、条件を指定して、図形を削除することもできますので、かなり便利です。

図形の扱いになれていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す