• ベストアンサー

特定のオートシェイプだけ削除するVBA

エクセルで一枚のシートに複数のオートシェイプを使用したものがあります。 オートシェイプを使用しているセルの範囲は (A1:L22)と(M1:U22)の二箇所なのですが、 VBAで(A1:L22)の範囲にあるオートシェイプのみ削除する事は可能でしょうか? (A1:L22)内のオートシェイプは作業内容により毎回変わるので 形などは特定できません。 また、オブジェクトの選択で範囲指定をした後削除という方法もあるのですが この削除の作業の前後に他の作業のVBAを使用しているので VBAで削除が出来ればと思います。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.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

creopatra
質問者

お礼

早速試してみるとできました!! ありがとうございます!! これで思っていたことが進むのでとてもうれしいです!!

その他の回答 (1)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

>VBAで(A1:L22)の範囲にあるオートシェイプのみ削除する事は可能でしょうか? シェイプ全体がこのセル範囲に入っているものか、 シェイプの一部のみ入っているものも含むのか、 TopLeftCellがセル範囲に入っていればいいのか、 不明です。

creopatra
質問者

補足

早速ありがとうございます。 説明がわかりづらく申し訳ありません。 セルの範囲とは そのセルの範囲内にオートシェイプ収まるという意味で書いていました。 すこしでもその範囲外に出るということはありません。