'選択した図形を削除
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
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で全ての図形を選択
選択した図形が削除されます。
選択した図形を削除
シート内の全ての図形を削除できました。
「Shapes.Count」を使って削除
次は、シート内の全ての図形を、「Shapes.Count」を使って、削除してみます。
VBAコードは、こんな感じになります。
Sub TEST5()
'シート内の図形を後ろからループ
For i = ActiveSheet.Shapes.Count To 1 Step -1
ActiveSheet.Shapes(i).Delete '図形を削除
Next
End Sub
ポイントは、後ろからループするところですね。
削除していくと、図形の番号が、変わっちゃうので、後ろからループしてあげます。
シート内に、複数の図形を用意しました。
複数の図形を用意
では、実行してみます。
全ての図形を削除
シート内の全ての図形を削除できました。
「For Each」を使って削除
最後は、シート内の全ての図形を、「For Each」を使って、削除してみます。
「For Each」を使うと、条件を指定することができたり、応用が利きますので、便利です。
VBAコードは、こんな感じになります。
Sub TEST6()
'シート内の図形をループ
For Each a In ActiveSheet.Shapes
a.Delete '図形を削除
Next
End Sub
シート内に、複数の図形を用意しました。
複数の図形を用意
では、実行してみます。
全ての図形を削除
シート内の全ての図形を削除できました。
こんな感じで、全ての図形を削除することができます。
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
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