日常生活でカレンダーに〇印を付ける事をエクセルでもやりたいなあ~って悩んだことありませんか?
そして、その〇丸印を1個ずつ消すのは面倒なので、まとめて消去出来たら作業効率が上がるのになあって思いませんでしたか?

図形や画像などを消すにはshapesコレクションを使います。
全ての図形や画像など全てを消す
ワークシート上に配置している全ての図形や画像をまとめて一括消去するならば、SelectAllメソッドを組み合わせればできます。
ここでは、ユーザーフォームに配置したコマンドボタンに、全ての図形や画像を消去するVBAコードを書いています。
Private Sub CommandButton1_Click()
ActiveSheet.Shapes.SelectAll
Selection.ShapeRange.Delete
End Sub
- コマンドボタン1が押されたら
- 表示中のシートにある全ての図形と画像を選択する
- 選択した図形と画像を消去する
- マクロ記録終了
これで、シート内の全ての図形・画像を消すことができるのですが、気をつけないといけないのが、同じシートに配置したコマンドボタンなどのコントロールも全て消えてしまうので、この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が押されたら
- 図形を扱う変数「i」を宣言する
- 表示中のシートにあるグラフの枠線をひとつずつ繰り返し探して選択して
- 見つけたグラフの枠線を消去する
- 見つからなくなるまで繰り返す
- マクロ記録終了
変数Dimを宣言するってなると頭から煙が出てしまうかもしれませんが、「i」自体はただの文字で実は何でもいいんです。
適当に好きな名前をつけて大丈夫で、難しく考えないず「Dim i As Shape」で、図形(Shape)を扱うので「i」という名前で一時的にバックアップ(格納)しておいてねって感じです。
そして次にFor Each i In ActiveSheet.Shapesで、表示中のシートにある図形を繰り返し見つけたら取り出して「i」という名前でバックアップ(格納)してねという事です。
これでコマンドボタンを残して、グラフの枠線だけ消去できるようになります。

〇丸印を消すのなら、当然〇丸印を付ける事もVBAマクロでやりたいですよね。
また消去つながりで、エクセルVBAで表示したり非表示にしたり、つけたり消したりなど様々なことができますので、ぜひ参考にして下さいね。