【VBA】図形削除マクロの作り方~指定範囲内の図形だけを削除する方法~

 

図形を削除する処理を自動化したい。範囲を指定して全ての図形を削除したい。

 

こんな要望にお応えします。

 

この記事では、

指定範囲内の図形だけを削除するVBAのコードの解説、コピペして使えるサンプルコード

を紹介しています。

 

エクセル業務で図形の編集処理に手間がかかっている!という方は是非参考にしてみてください。

 

広告

指定範囲の図形だけを削除するVBA

 

指定範囲の図形だけを削除するVBAの概要がこちら

 

 

Left Caption

ガッツポーズの人

図形を編集するエクセル業務との相性抜群です。

 

作り方

指定範囲の図形だけを削除するVBAには以下のVBAが設定されています。

 

・図形を削除するVBA

図形(Shapes)を削除(.Delete)

 

・範囲を指定するVBA

Intersectメソッド(2つのセル範囲の中から重なったセル範囲を取得する)

 

・全ての図形を選択するVBA

For Each ~ Next(繰り返し処理)

 

 

これらのVBAを組み合わせることで指定範囲の図形だけを削除する処理が可能となります。

 

指定範囲の図形だけを削除するVBAのサンプルコード

Sub セルを指定()
    Dim myShape As Shape
    Dim myRange As Range
     'A1セルからJ10セルの範囲の図形を削除する
                Set myRange = ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(10, 10))
                For Each myShape In ActiveSheet.Shapes
                If Not (Intersect(ActiveSheet.Range(myShape.TopLeftCell, myShape.BottomRightCell), myRange) Is Nothing) Then
                myShape.Delete
                End If
                Next
End Sub

 

  • 5行目で、図形の削除範囲を指定(サンプルではA1セルからJ10セルの範囲)
  • 6行目と9行目で、繰り返しで図形を選択する
  • 7行目から8行目で、指定範囲に図形があったとき削除する

 

5行目の指定範囲を編集するだけで削除する範囲を変更することができます。

 

このサンプルVBAは、

いろんなVBAに応用できるほど使い勝手がいいコード

なのでコピペして使い回してください。

 

導入方法

1.VBA編集画面を開く

 

 

2.Module1を作成

 

3.Module1にVBAを入力

 

コードを上記で紹介している「指定範囲の図形だけを削除するVBAのサンプルコード」をコピペして入力してください。

 

4.ボタンを作成

 

5.ボタンにマクロを登録

以上でVBAの登録は完了です。

 

実行結果

 

図形を適当に挿入

 

「マクロ実行」ボタンを押下すると、A1セルからJ10セル内の図形を削除することができます。

 

 

 

 

指定範囲の図形だけを削除するVBAの導入事例

実際のエクセル業務に「指定範囲の図形だけを削除するVBA」を導入した事例をご紹介します。

導入事例① 写真を貼り付けるVBA

 

挿入した写真データは図形(オブジェクト)として認識されるので「指定範囲の図形だけを削除するVBA」で削除することができます。

 

写真を貼り付けるVBAでは、

貼り付けられている写真を削除してから写真を貼り付ける

という流れでコードを設定していきます。

 

なので、図形(写真データ)を削除するVBAの設定が必須事項となります。

 

関連記事「写真をは貼り付けるVBA」を参考にすると、図形を削除するVBAと写真を貼り付けるVBAの組み合わせ方を理解することができます。

 

 

併せてチェックしてみてください。

 

導入事例② 文字を丸で囲むVBA

 

「文字を〇で囲む」、「テキストに取り消し線を表示する」このような処理を自動化するVBAは

表示されている図形(丸や直線)を削除してから新しい図形を表示する

という流れでコードを設定していきます。

 

写真を貼り付けるVBA同様に、図形(丸や直線)を削除するVBAの設定が必須事項となります。

 

関連記事「テキストの転記、図形の挿入を自動化するVBA」では上図で紹介されている「条件によって図形を操作するVBA」が設定されてあエクセルファイルをダウンロードすることが可能です。

「条件によって図形を操作するVBA」や「シート内全ての図形を削除するVBA」が設定されています。

 

 

気になる方は併せてチェックしてみてください。

図形削除VBAを業務内容に合わせて導入する方法

業務内容に合わせたVBAを設定するには、

自分でVBAを設定する方法VBA開発依頼をする方法

の2つがあります。

 

自分でVBAを設定する方法

自分でVBAを設定する手順がこちら

  1. どのような処理をしたいのか具体的なイメージを持つ
  2. VBAを書いてみる
  3. ネットや参考書を使って問題点を解決していく

 

Left Caption

ガッツポーズの人

私はこの方法でいくつもの効率化マクロを開発

 

今回紹介した「指定範囲の図形だけを削除するVBA」は単体で設定するのではなく、図形を編集するVBAと組み合わせることがほとんどです。

  1. 図形を表示させるVBAを設定
  2. VBAを実行する度に前回挿入した図形が邪魔になる
  3. 図形を挿入する前に既に表示されている図形を削除するVBAが必要
  4. シート内全ての図形を削除してしまうと「マクロを登録したボタン」まで削除される
  5. 指定範囲の図形だけを削除したい

 

このような流れで「指定範囲の図形だけを削除するVBA」の作り方が知りたい!と考える方が多いのではないでしょうか。

 

Left Caption

上を目指す人

私もその一人です。

一つ一つ問題を解決してVBAを設定していけば、必ず思い通りのVBAを設定することができるはずです。

 

諦めずに挑戦していきましょう。

 

VBA開発依頼をする方法

当ブログが行っているVBA開発代行サービスの依頼方法は、

現状このようなエクセル作業をしていて自動化したい!

と伝えるだけ。

 

もちろん、「指定範囲の図形だけを削除するVBAが必要な図形を操作するVBAの開発」も承っております。

 

エクセル業務の効率がアップするようなVBAの提案、開発を行っています。

>>>マメBlogのVBA開発依頼の詳細はこちら

 

関連記事「年間50件達成!!マクロ開発実績について」ではマメBlogが行ってきたVBA開発の実績が詳しく紹介されています。

 

どんなVBA開発を行っているのか、費用はどれくらいかかるのか、などVBA開発依頼サービスに興味のある方は是非チェックしてみてください。