如何使用VBA在Excel工作表中的现有形状之后粘贴Shape?

M3H*_*HD1 2 excel vba copy-paste shape

我想复制一个Shape并粘贴一个已经包含一个或多个Shapes的Sheet.我尝试使用以下简单代码:

myShape.Select
Selection.Copy
ActiveWorkbook.Sheets(mySheet).Paste
Run Code Online (Sandbox Code Playgroud)

但它将它贴在工作表中现有的形状上方...

有没有解决方案来检测现有形状的结束或直接粘贴?谢谢

Sid*_*out 6

这是你在尝试什么?

Sub Sample()
    Dim myShape As Shape

    Set myShape = ActiveSheet.Shapes("Rectangle 1")

    myShape.Copy

    ActiveSheet.Paste

    With Selection
        .Top = myShape.Height + 10
        .Left = myShape.Left
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

如果有更多的形状,然后你将不得不遍历所有的形状,然后找到最后的形状,并采取形状的.Top.Height考虑.

看这个例子

Option Explicit

Sub Sample()
    Dim myShape As Shape, shp As Shape
    Dim sHeight As Double, sTopp As Double

    For Each shp In ActiveSheet.Shapes
        If shp.Top > sTopp Then
            sTopp = shp.Top
            sHeight = shp.Height
        End If
    Next

    Set myShape = ActiveSheet.Shapes("Rectangle 1")

    myShape.Copy

    ActiveSheet.Paste

    With Selection
        .Top = sTopp + sHeight + 10
        .Left = myShape.Left
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)