- ベストアンサー
特定のオートシェイプだけ削除するVBA
エクセルで一枚のシートに複数のオートシェイプを使用したものがあります。 オートシェイプを使用しているセルの範囲は (A1:L22)と(M1:U22)の二箇所なのですが、 VBAで(A1:L22)の範囲にあるオートシェイプのみ削除する事は可能でしょうか? (A1:L22)内のオートシェイプは作業内容により毎回変わるので 形などは特定できません。 また、オブジェクトの選択で範囲指定をした後削除という方法もあるのですが この削除の作業の前後に他の作業のVBAを使用しているので VBAで削除が出来ればと思います。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Range("A1:L22")内にオートシェイプの左上の角が入っているものという条件でよろしければ以下でいけます。 Sub Del_test() With ActiveSheet For Each ob In .DrawingObjects If Not Intersect(ob.TopLeftCell, .Range("A1:L22")) Is Nothing Then ob.Delete End If Next End With End Sub
その他の回答 (1)
- marbin
- ベストアンサー率27% (636/2290)
>VBAで(A1:L22)の範囲にあるオートシェイプのみ削除する事は可能でしょうか? シェイプ全体がこのセル範囲に入っているものか、 シェイプの一部のみ入っているものも含むのか、 TopLeftCellがセル範囲に入っていればいいのか、 不明です。
補足
早速ありがとうございます。 説明がわかりづらく申し訳ありません。 セルの範囲とは そのセルの範囲内にオートシェイプ収まるという意味で書いていました。 すこしでもその範囲外に出るということはありません。
お礼
早速試してみるとできました!! ありがとうございます!! これで思っていたことが進むのでとてもうれしいです!!