【VBA】選択したセル範囲内にある図形を削除する方法

ライフスタイル

この記事では、エクセルにおいて、特定の図形やテキストボックスをVBAで削除する方法をご紹介します。

 

完成イメージはこちら

ボックスをVBAで削除

 

図形の複数削除であれば、特段VBAを使わずとも、複数選択して(Ctrl+マウスクリックなど)デリートするだけの簡単な作業です。

ただし、場合によってはマクロの実行ボタン1タッチで削除したほうが得策なケースもあるでしょう。

 

私もその内の1人で、ようやく参考になったコードを発見しましたので、引用しつつ作成していこうと思います。

スポンサーリンク

選択したセル範囲内の図形を削除するコード

今回参考にさせていただいたページはこちら↓

 

実際に使用するコードを引用させていただきます。
(※PCでの閲覧をおススメ)

Sub 選択されているセル範囲内の図形を削除する()
Dim shp As Shape
Dim rng As Range

If TypeName(Selection) <> “Range” Then Exit Sub

For Each shp In ActiveSheet.Shapes
‘ 図形の配置されているセル範囲をオブジェクト変数にセット
Set rng = Range(shp.TopLeftCell, shp.BottomRightCell)
‘ 図形の配置されているセル範囲と
‘ 選択されているセル範囲が重なっているときに図形を削除
If Not (Intersect(rng, Selection) Is Nothing) Then
shp.Delete
End If
Next
End Sub

 

他にも参考になったページ及びコードがありましたが、私が職場で使っている”エクセル2007″ではうまく機能せず…途方に暮れていました。

一方で上記コードは正常に動いてくれたので、古いバージョンのエクセルでも問題ないかと思います。

実践:コードを記述して実行、図形を削除

下図、「abcde」と書いてあるボックスを削除します。

 

エディタを開いたら、〔挿入〕⇒〔標準モジュール〕から先ほどのコードを記述。

VBAでコードを記述

これで完成です。

参考にさせていただいた『インストラクターのネタ帳』様には多大なる感謝ですね…!

 

では、実際に記述したコードを実行させてみます。

手順は、【削除したい図形が入っているセルを選択】⇒【マクロの実行】です。

 

もう一度完成イメージ↓

ボックスをVBAで削除

 

セルの範囲選択をしないと削除はできませんので注意!

少しでも図形と被っていればOK。範囲選択を忘れずに!

削除ボタンの作り方は、ボタンとなる図形を設置したら右クリックで「マクロの登録」から、該当のマクロを選択すればできます。

誤って全ての図形を削除しないようにする方法

セル範囲の選択をすることで、その範囲内の図形を削除できるようになりました。

一方で、私の場合は「消したくない図形」もあったので、うっかり削除してしまわないようにエクセル側で設定することに。

使うのは【シートの保護】

選択した範囲内の図形を削除できるということは、特定のセルを選択不可能な状態にしておけば、うっかりミスを防げることに繋がります。

さっそくやってみます。

 

まずは、削除して問題ない図形がすっぽり収まるように、セルの範囲を選択。

削除したくない図形と被っているセルは選択しないように注意します。

 

選択したセル上で右クリック⇒〔セルの書式設定〕⇒〔保護〕に進み、〔ロック〕のチェックを外してOKを押します。

 

次に〔校閲〕タブから〔シートの保護〕を選び、上図の「ユーザーに許可する操作」〔ロックされていない範囲の選択〕にチェックを入れます。

その他の項目は用途に合わせてチェックしてください。

 

シートの保護をすると、基本的にすべてのセルが選択できなくなりますが、セルの書式設定でロックを外すことでシート保護の対象から除外される仕組みですね。

これで、うっかりミスを防ぐことができそうです。

VBAで図形やテキストボックスをワンタッチ削除

今回の方法では、「セル範囲の選択」のアクションが必要となります。

ただ、それさえ行ってしまえば、あとはマクロの実行で任意の図形やテキストボックスを削除することができるので便利です。

 

少しでも時間短縮につなげたい!めんどくさい作業を減らしたい!

とストレスを感じている方は、ぜひ参考にしてほしいと思います。

コメント