• ベストアンサー

エクセルマクロで、どなたか教えてください。

下記の内容ですと、シート全体に対して行うのですが、 範囲を指定するにはどうしたらよいのでしょうか? ActiveSheet.DrawingObjects.Delete range("A3:H9").Objects.Delete と、したらエラーになってしまいました。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

>…と、したらエラーになってしまいました。 図形を「セル範囲から呼び出す」方法はありませんので,そういうやり口では出来ません。 「範囲を指定」して(そこに載っている)図形を参照する方法は無い,というイミです。 敢えて行うとすれば sub macro1()  dim d as variant  for each d in ActiveSheet.DrawingObjects   if not application.intersect(d.topleftcell, range("A3:H9")) is nothing then    d.delete   end if  next end sub といった具合に,一個ずつ該当セル範囲に載ってるか否かイチイチ見ていくようなやり方になります。

npsw
質問者

お礼

ありがとうございました。 教えていただいた方法でやってみます。

その他の回答 (1)

  • kybo
  • ベストアンサー率53% (349/647)
回答No.2

範囲を指定してするには、ループを回すしかないです。 図形の左上部分がセルのA3:H9の範囲内にあるかで判断する例です。 Sub macro() Dim C As Shape For Each C In ActiveSheet.Shapes If Not Intersect(C.TopLeftCell, Range("A3:H9")) Is Nothing Then C.Delete End If Next C End Sub

関連するQ&A