Excel,Vba Macro可以将形状“移动”为其他形状,而无需复制和粘贴

时间:2019-05-11 07:36:10

标签: excel vba

我想将形状移动到另一张纸上,而不在宏中使用复制和粘贴。还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

如果形状是图表对象,则可以更改其位置:

ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet2"

对于所有其他类型的形状,没有location属性或move方法。如果要避免复制和粘贴,则需要在新图纸上创建一个新形状并复制所有相关属性,然后删除原始属性。

Sub MoveShape()

    Dim shp1 As Shape, shp2 As Shape

    Set shp1 = Sheets("Sheet1").Shapes(1)
    Set shp2 = Sheets("Sheet2").Shapes.AddShape(shp1.Type, shp1.Left, shp1.Top, shp1.Width, shp1.Height)

    shp2.Name = shp1.Name
    shp2.Fill.ForeColor.RGB = shp1.Fill.ForeColor.RGB
    shp2.Line.Weight = shp1.Line.Weight
    shp2.Line.DashStyle = shp1.Line.DashStyle
    shp2.Line.ForeColor.RGB = shp1.Line.ForeColor.RGB

    shp1.Delete

End Sub