セル範囲と図形を指定してVBAで削除する方法

このQ&Aのポイント
  • エクセルで一枚のシートに複数のオートシェイプ(○、△、□)を使用したものがあります。オートシェイプを使用しているセルの範囲は(A1:G20)と(AP1:AX20)の二箇所なのですが、VBAで(A1:G20)の範囲にあるオートシェイプ(○のみ)を削除する事はできますか?
  • 手動で、オブジェクトの選択で範囲指定をした後削除という方法もあるのですが、この削除の作業の前後に他のVBAを使用しているので、VBAで削除が出来ればと思います。
  • いろいろ検索したのですが、セル範囲もしくは図形のいずれかを指定して削除する方法はあったのですが、両方を指定してのVBAがわかりませんでした。
回答を見る
  • ベストアンサー

セル範囲と図形を指定してVBAで削除するには?

エクセルで一枚のシートに複数のオートシェイプ(○、△、□)を使用したものがあります。 オートシェイプを使用しているセルの範囲は(A1:G20)と(AP1:AX20)の二箇所なのですが、 VBAで(A1:G20)の範囲にあるオートシェイプ(○のみ)を削除する事はできますか? (A1:G20)の範囲にあるオートシェイプは全体がこのセル範囲に入っています。 手動で、オブジェクトの選択で範囲指定をした後削除という方法もあるのですが この削除の作業の前後に他のVBAを使用しているので、 VBAで削除が出来ればと思います。 いろいろ検索したのですが、セル範囲もしくは図形のいずれかを指定して 削除する方法はあったのですが、両方を指定してのVBAがわかりませんでした。 よろしくお願いいたします。

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

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

ふつーに調べて削除するだけです。 sub macro1()  dim s as shape  for each s in activesheet.shapes   if not application.intersect(s.topleftcell, range("A1:G20")) is nothing then   if s.autoshapetype = msoshapeoval then    s.delete   end if   end if  next end sub みたいな。 #ご利用のエクセルのバージョンが不明のご相談ですが、マクロで図形等を扱う場合、エクセルのバージョンに応じて書き振りを変える必要がある場合があります。ご相談投稿では、普段あなたがご利用のソフトのバージョンまでキチンと明記することを憶えて下さい。

katekin1200
質問者

お礼

回答ありがとうございます! EXCEL2013で試したところ、望んでいた通りになりました! 質問が初めてだったため、エクセルのバージョンを 明記するマナーを知らず申し訳ありませんでした。 またお世話になることがありましたら、 きちんとバージョン等明記したいと思います。

関連するQ&A

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

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

  • 指定範囲内で図形等を削除する方法は?

    Windows、Xp。 Excel で、シート内に幅広くオートシェィプ等で描いたいろんな図形があるとします。これらの図形を、ある範囲をドラッグで指定して、その範囲内の図形だけを削除したいのですが、どうしたらよいか操作方法を教えてください。因みに、セル範囲を指定し ⇒ [編集] ⇒ 「ジャンプ」 ⇒ 「セル選択」 ⇒ 「オブジェクト」 ⇒ OK  と操作すると、シート内の全ての図形が対象になってしまい目的を達することができません。範囲の指定の仕方と指定するタイミングを教えてください。お願いします。

  • エクセルVBAで直線図形(オートシェイプ)を書きたいのですが。

    エクセルVBAで直線図形(オートシェイプ)を書きたいのですが。座標の指定方法がいまひとつ分かりません。 マクロの記録で、座標数値の設定は分かるのですが、セルに対しての指定方法が分かりません。 図形をドラッグ指定したA1セルからC1セルまで直線を書きたいのです。セルへの始点終点の指定方法が有るのでしょうか。

  • VBA 図形の削除

    以下のようなコードにおいて、図名を指定するのではなく、図の種類を指定して削除したいのです。 テキストボックスを消す グラフを消す オートシェイプを消す などなど、オブジェクトの種類を指定して消すようにしたいのですが、どうすれば良いですか? Sub 指定図形削除()  図名=”削除したい図形名”  For Each zu In ActiveSheet.Shapes   If zu.Name = 図名 Then    zu.Delete    Exit For   End If  Next End Sub

  • エクセルで指定セル範囲内の画像・オートシェイプ・値をマクロを使って削除したい

    エクセル2003のマクロについての質問になります。 "B2:D2,B3:F10"を指定範囲として,その中に存在する画像・オートシェイプ及び, 同範囲内のセルに入力されている値を一度に削除するマクロを教えてください。 画像・オートシェイプは指定範囲に一部でも掛かっていれば削除対象にしたいと思っています。 なお,指定範囲には罫線,結合セル,入力規則(プルダウン),マクロ登録オートシェイプ,数式が存在しますが,それらは残したままにしたいと思っています。 (マクロ登録オートシェイプと数式については,残したままにすることは困難に感じるので,無理そうならそれらは除外してお願いします。) マクロについて初心者ですので,コピーペーストでそのまま使用できる状態で回答頂けると助かりますm(__)m よろしくお願いします。

  • VBAでのセル範囲指定について

    お世話になります。 私が分からないのは、VBAでのセル範囲指定なのですが、 例えば、シートにデータが有、そのデータの1行目は見出しなので 2行目からデータが入っているセルまでの範囲を指定、コピーして 隣のシートに貼付したいのですが、そのデータの入力される範囲が 毎回違います。「CurrentRegion.Select」としてしまうと、1行目 の見出しまでも範囲指定されてしますので、どうやったら良いのか どなたかお教え頂きたく宜しくお願い申し上げます。

  • VBAでセル範囲条件の指定

    下記のようなことを行いたいのですが、VBAの記述でうまくいかなくて困っています。 ----------------------- もし、現在選択中のセルがA1からA5の範囲にあるならば→「実行1」を行う もし、A1からA5の範囲内にないなら「実行2」を行う ------------------------ たったのこれだけのことなのですが、「A1からA5の範囲」を指定する方法がよくわかりません。 ------------------------ Sub セル範囲判定() If ActiveCell = Range("A1:A5") Then MsgBox "A1:A5がアクティブです" Else MsgBox "A1:A5がアクティブではありません" End If End Sub ------------------------- などとしてもうまくいきません。 構文が良くわかっていないので困っています。 「アクティブセルが○○なら」という部分を教えていただけると助かります。

  • エクセルVBA セルを指定して図形を削除するには?

    例えばセルB2からE5で囲まれた範囲に何個かのテキストボックスや図形が描かれている時に、”B2からE5にあるそれらを全て削除しろ”というマクロはどのように描けば良いのでしょうか?

  • エクセル:VBAでシート上のオートシェイプ以外の図形を消去したい。

    お世話になります。 ★VBAでシート上のオートシェイプ以外の図形を消去したいのです。 No.1902175で、エクセルシート上の図形の削除方法をいろいろ教えていただきました。今回は、そのときにはあてはまらなかった、「オートシェイプをのぞく図形をVBAで削除したい」のです。 補足:シートは毎月のある行事等の予定表です。オートシェイプにはマクロを登録しているため消したくありません。その他の図は季節の行事に関するクリップボード等の図で、担当者がシートから毎月手作業で削除していたものです 以上、よろしくお願いいたします。

  • VBA 図形の移動をセル指定にしたい

    ワークシート上の図形を任意のセルで指定して その場所に移動させたいのですが 上手くいかないので質問します。 やりたいこと A1~A10セルに月・火・水・・・とランダムに 曜日が入っていて その中に、土という文字があれば その土とかかれたセルまで図形を持っていき さらにその図形をちょっと右にずらすという動きをさせたいです。 コードは下記を見て頂きたいのですが 図形の指定や図形をちょっと右にずらすのはできたのですが 土とかかれたセルの位置に持ってくるのがどうしてもできませんでした どうすれば指定した位置に図形を持ってこれるのでしょうか? すいませんがコードを記載してもらえると助かります。 回答よろしくお願いします。 Sub 図形移動() Dim a As Variant For a = 1To 10 If Cells(a, 1).Value = "土" Then ActiveSheet.Shapes("Rounded Rectangle 29").Select  Selection.ShapeRange.IncrementLeft 90 End If Next a End Sub

専門家に質問してみよう