アクティブシート上の、グループ化された図形をグループ解除するマクロをご紹介しました。
この記事を作成する工程で、英語圏の掲示板を眺めていたら、興味深い別のExcelマクロが紹介されているのに気付きました。選択されているセル範囲の図形を削除するマクロです。
ワークシート上の複数の図形を削除するには、[Shift]キーや[Ctrl]キーを押しっぱなしにして図形を一つずつクリックしていくか、[オブジェクトの選択]コマンドからマウスポインタを変更してドラッグする必要があります。
この作業を楽にしてくれるマクロです。
この掲示板に書かれているマクロは確かに便利なのですが、図形の左上が選択されたセル範囲に含まれているときに削除が行われるという仕様です。
選択したセル範囲に含まれる図形を削除するサンプルマクロ
図形の左上が選択されているセル範囲に含まれるよりも、図形の一部でも選択されたセル範囲に含まれているときに削除できるほうが、より便利だと感じたので、そんなマクロを作ってみました。
If TypeName(Selection) <> "Range" Then Exit Sub
Dim rng As Range
Set rng = Range(shp.TopLeftCell, shp.BottomRightCell)
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If Not (Intersect(rng, Selection) Is Nothing) Then
shp.Delete
End If
Next
End Sub
サンプルマクロの解説
セル以外が選択されているときに実行時エラーが発生しないように、セルが選択されていないときはこのマクロを終了します。
If TypeName(Selection) <> "Range" Then Exit Sub
図形の配置されている、セル範囲をオブジェクト変数・rngにセットします。
Set rng = Range(shp.TopLeftCell, shp.BottomRightCell)
アクティブシート上の、すべての図形にループ処理を開始し、
For Each shp In ActiveSheet.Shapes
オブジェクト変数・rngにセットした図形の配置されているセル範囲と、選択されているセル範囲が重なっているかどうかをIntersectメソッドで調べ、
If Not (Intersect(rng, Selection) Is Nothing) Then
重なっているときにその図形を削除しています。
shp.Delete
最終更新日時:2021-12-14 13:48
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAで選択したセル範囲に含まれる図形を削除する