あるシートに以下のマクロを実行するボタンと座標データが
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
|