Shapeオブジェクトは・・・
・Duplicateメソッドがある
・マクロ登録ができる
の2点を応用すると、複製元のShapeオブジェクトに複製を行うマクロ登録をして、
クリック時にDuplicateメソッドを実行するということが可能です。
Sub DuplicateShape()
Dim Sh As Shape
'Application.CallerでクリックされたShape名を取得
Set Sh = ActiveSheet.Shapes(Application.Caller)
’複製
Sh.Duplicate
End Sub
上記プロシージャを実行すると、複製されたShapeは副セもとのOnActionプロパティ
ーを継承しますので、形状変更、書式変更などを行った後、再度クリックすれば、
変更後のShapeが複製されることになります。
※Shapeの全削除
Activesheet.Shapes.SelectAll
Selection.Delete
※マクロの全解除
Dim Sh As Shape
For Each Sh In ActiveSheet.Shapes
Sh.OnAction = ""
Next
|