- ベストアンサー
マクロでオートシェイプ以外の図形を消去したい。
いろいろとマクロを手探りで独学しています。どうしてもわからないので教えてください。 シート上にたくさんの画像が並べてあります。これはマクロを使って挿入・配置されたものです。それを印刷してしまったら、新たにその上から異なる画像を貼り付けていくようにしています。画像は挿入されてきますが、前の画像を消去しなければ、重なってしまうため、消去しなければいけません。ただし、画像を挿入するためのマクロをオートシェイプに登録しているので、これ以外の画像(図)を消去するというマクロが必要です。この消去するマクロも「新しいマクロの登録」で試したのですが、Picture***と画像に名前をつけた状態のものを選択し、消去するというもので、希望のマクロではありません。可能であれば、選択範囲のセルの画像を消去するというマクロが理想です。よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
画像(Picture)は無差別に削除してよいなら。 Sub DeletePictures() ActiveSheet.Pictures.Delete End Sub # 画像にはマクロを割り当てていない前提で 画像(Picture)に加え、シェープやグラフなども含めて対象とし、 かつマクロを割り当てていないもののみ削除...とするなら。 (セルの選択範囲内にあるもののみ削除します) Sub DeleteShapes() Dim shp As Shape On Error Resume Next For Each shp In ActiveSheet.Shapes If Not Intersect(shp.TopLeftCell, Selection) Is Nothing Then If shp.OnAction = "" Then shp.Delete End If End If Next End Sub
その他の回答 (2)
- marbin
- ベストアンサー率27% (636/2290)
今後の検討課題として・・・。 Imageコントロールを使えば、 中身だけを変える、という ことも出来ます。 中身が無いものは非表示、 とすればいいかと思います。
お礼
ありがとうございます。まだまだ勉強不足の私には理解ができません。これからもっと勉強します。
- marbin
- ベストアンサー率27% (636/2290)
TypeName で判定します。 Dim shp As Object For Each shp In Worksheets(1).DrawingObjects If TypeName(shp) = "Picture" Then shp.Delete Next
お礼
ありがとうございます。対処できました。
お礼
上段の無差別に消去で対処できました。ありがとうございました。