VBA全般:「シェイプの書式複写」
シェイプのコピーではなく、書式のみの複写をしたい場合どうするか。
もう・・こんなことすら覚えてない時点で俺の馬鹿馬鹿馬鹿!!
で、自作してしまったわけですが・・。
※ 面倒なのでテストしてませんが、以下の
Selection.ShapeRange.IncrementLeft sngY
は、
Selection.ShapeRange.Left = 配置したい左位置
でいけると思う。
' 指定した図形を複写して配置します。
Public Function shapeCopy(strShapeName As String, _
sngLeft As Single, sngTop As Single) As String
Dim sngX As Single
Dim sngY As Single
ActiveSheet.Shapes(strShapeName).Select
Selection.ShapeRange.Duplicate.Select
Selection.Name = "Buf" & CStr(ActiveSheet.Shapes.Count)
' 配置位置指定(相対位置しか指定できなかったので相殺して計算)
sngY = sngLeft - Selection.Left
sngX = sngTop - Selection.Top
Selection.ShapeRange.IncrementLeft sngY
Selection.ShapeRange.IncrementTop sngX
shapeCopy = Selection.Name
ActiveSheet.Shapes(strShapeName).SelectEnd Function
えぇ。
バカです。
以下、複写するだけのものを書きます。
' 指定した図形の書式設定をそのまま別の図形に複写します。
Public Sub shpaeToShapeCopy(strSrcShapeName As String, _
strDstShapeName As String)ActiveSheet.Shapes.Range(strSrcShapeName).PickUp
ActiveSheet.Shapes.Range(strDstShapeName).Apply
End Sub
以上・・orz
ばか。