【Excel VBA】選択範囲にかかる図形を一括削除する方法

図形を多く使うタイミングが、時折やってきます。

ただ、セルだけをコピーしたいのに、図形まで一緒についてきてしまうこともあります。

図形はまとめて選択がしづらいため、サッと消せるVBAをもっておくと効率的です。

▼関連記事

※こんな図形も消せます

Contents

VBAの基本

VBAの基礎的な内容はこちらでまとめています。
必要に応じてご参照ください。

▼関連記事

すぐ使いたい方はこちら

使用するコードはこのような形です。
VBE画面に貼り付けていただければ、すぐに使えます。
※マクロで削除した図形は、通常の操作のように「元に戻す」ができないためご注意ください。
 必要に応じて、ファイルを保存してから実行してください。

コードはこちら
Sub 選択範囲にかかる図形を削除()

    Dim shp As Shape
    Dim rng As Range
    Dim i As Long
    
    ' 1. 選択されているのがセル(Range)であることを確認
    If TypeName(Selection) <> "Range" Then
        MsgBox "セルを選択してから実行してください。", vbExclamation
        Exit Sub
    End If
    
    Set rng = Selection

    ' 2. Shapesを後ろからループ(削除時のインデックスずれ防止)
    ' ※ActiveSheet.Shapes.Count から 1 まで逆順に回す
    For i = ActiveSheet.Shapes.Count To 1 Step -1
        Set shp = ActiveSheet.Shapes(i)
        
        ' 図形と選択範囲が少しでも重なっているか判定
        ' 重なり判定:(図形の右 > 範囲の左) かつ (図形の左 < 範囲の右) ...
        If shp.Left + shp.Width > rng.Left And _
           shp.Left < rng.Left + rng.Width And _
           shp.Top + shp.Height > rng.Top And _
           shp.Top < rng.Top + rng.Height Then
            
            shp.Delete
            
        End If
    Next i

End Sub

以前、YouTubeでも解説しました。
使い方の実例などは、こちらも参考にしていただければ。

▼ショートカットキーの管理方法

やりたいことを見つけるのが重要

さて、今回の図形削除VBAですが、ゼロから書いたわけではありません。

図形削除のVBAを作成したいと思い立ち、ChatGPTに聞きながら作ったものです。

こうしたことも、漫然と過ごしているだけだと、なかなか思い浮かばないものです。

  • 少し手間がかかる
  • ショートカットできないか
  • めんどくさい

このようなセリフが浮かんだときは効率化のチャンスです。
見逃さないようにしていきましょう。

では、また次回。

編集後記

◇日記
 昨日はオフ。
 午前中は息子と公園でサッカーなど。
 次男が発熱し39℃超…。
 早く治るといいのですが…。

◇ブログネタ経緯
 Excelを眺めていて浮かんだネタ。

◇1日1新
 美容室開業&理容室開業の攻略メソッド~独立・開業・出店のための参考書~

よかったらシェアしてね!
  • URLをコピーしました!
Contents