意の中のカワズ(35歳の壁 別館)

35歳の壁の別館ブログです。コード中心になるようにしたいので、技術雑記はできるだけ本館に書きます。

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).Select

End Function


えぇ。
バカです。

以下、複写するだけのものを書きます。


' 指定した図形の書式設定をそのまま別の図形に複写します。
Public Sub shpaeToShapeCopy(strSrcShapeName As String, _
strDstShapeName As String)

ActiveSheet.Shapes.Range(strSrcShapeName).PickUp
ActiveSheet.Shapes.Range(strDstShapeName).Apply
End Sub

以上・・orz
ばか。