エクセルVBAを使ってワークシート上の全ての図形や画像を消去する方法

図形一括消去VBA

スケジュール管理をエクセルで作成して〇印などの図形やイラストをつけたり写真を添付したりできますが、消すとなると1個ずつ消す手間が面倒だと思いませんか?

図形や画像などを消すにはshapesコレクションを使えば、まとめて一気に消去できるので便利ですよ。

目次

shapesコレクション

全ての図形や画像など全てを消す

ワークシート上に配置している全ての図形や画像をまとめて一括消去するならば、SelectAllメソッドを組み合わせればできます。

ここでは、ユーザーフォームに配置したコマンドボタンに、全ての図形や画像を消去するVBAコードを書いています。

全ての図形・画像を一括消去するVBA

Private Sub CommandButton1_Click()
ActiveSheet.Shapes.SelectAll
Selection.ShapeRange.Delete
End Sub

解説
  1. コマンドボタン1が押されたら
  2. 表示中のシートにある全ての図形と画像を選択する
  3. 選択した図形と画像を消去する
  4. マクロ記録終了

これで、シート内の全ての図形・画像を消すことができるのですが、気をつけないといけないのが、同じシートに配置したコマンドボタンなどのコントロールも全て消えてしまうので、このVBAコードを使う場合はユーザーフォームに限ります。

〇印などのグラフの枠線だけを全て消す

では次に、コマンドボタンまで消えてしまっては困るので、〇印を付けたこの印だけ消去して、コマンドボタンは消去しない方法が必要になります。

そこで、グラフの枠線だけをひとつずつ探して、見つけたグラフの枠線全てを選択して一括消去するVBAコードを書きます。

グラフの枠線だけを全て一括消去するVBA

Private Sub CommandButton1_Click()
Dim i As Shape
For Each i In ActiveSheet.Shapes
i.Line.Visible = msoFalse
Next i
End Sub

解説
  1. コマンドボタン1が押されたら
  2. 図形を扱う変数「i」を宣言する
  3. 表示中のシートにあるグラフの枠線をひとつずつ繰り返し探して選択して
  4. 見つけたグラフの枠線を消去する
  5. 見つからなくなるまで繰り返す
  6. マクロ記録終了

変数Dimを宣言するってなると頭から煙が出てしまうかもしれませんが、「i」自体はただの文字で実は何でもいいんです。

適当に好きな名前をつけて大丈夫で、難しく考えないず「Dim i As Shape」で、図形(Shape)を扱うので「i」という名前で一時的にバックアップ(格納)しておいてねって感じです。

そして次にFor Each i In ActiveSheet.Shapesで、表示中のシートにある図形を繰り返し見つけたら取り出して「i」という名前でバックアップ(格納)してねという事です。

これでコマンドボタンを残して、グラフの枠線だけ消去できるようになります。

ちなみに〇印を消すのなら、当然〇丸印を付ける事もVBAマクロでやりたいと思いますので、詳しくは下記に記載していますので合わせてごらんくださいませ。

目次