◆◆MS-Excel2000スキルアップ講座/VBA編◆◆

Shapeを削除する
あるシートに以下のマクロを実行するボタンと座標データが
50点ほどがあります。ボタンを押すと、同一シートにShape
で作画するマクロを作成しようとしていますが、古いShape
を削除するためシートのShapeをすべて消すコード3行を
追加したのですが、その時一緒にボタンも削除してしまいます。
ボタンを削除しない方法はありますでしょうか?

Sub Macro()

    ActiveSheet.Shapes.AddLine(0, 0, 100, 100).Select        'Dummy Shape
    ActiveSheet.Shapes.SelectAll
    Selection.Delete

        |
        |        座標の計算
        |
            ActiveSheet.Shapes.AddLine(X1, Y1, X2, Y2).Select
        |

End Sub

方法1

削除したくないボタンに名前を付けておいて


Sub Macro()

     ActiveSheet.Shapes.AddLine(0, 0, 100, 100).Select        'Dummy Shape
     ActiveSheet.Shapes.SelectAll
For Each s In Selection
    If Not s.Name = "com1" Then     'ボタンにつけた名前をcom1とした場合

        s.Delete
    End If
Next

         |
         |        座標の計算
         |
             ActiveSheet.Shapes.AddLine(X1, Y1, X2, Y2).Select
         |

End Sub

方法2

「Shapeを削除する」のではなく、くShape中のLineだけ消すことでも良いのでは?

NameプロパティにLineを含むかどうかで判断しました。

Sub DeleteAllLine()
    Dim itm As Variant
    For Each itm In ActiveSheet.Shapes
        If InStr(itm.Name, "Line") Then
            itm.Delete
        End If
    Next itm
End Sub