How to paste a Shape after existing Shapes in Excel Sheet using VBA?

copy-paste, excel, shapes, vba

Solution

Is this what you are trying?

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

If there are more shapes then you will have to loop through all the shapes and then find the last shape and take that shape's `.Top` and `.Height` into consideration.

See this example

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

Problem

I want to copy a Shape and paste it a Sheet already containing one or more Shapes. I tried using the following simple code : ``` myShape.Select Selection.Copy ActiveWorkbook.Sheets(mySheet).Paste ``` But it pastes it above the existing Shapes in the Sheet ... Is there a solution to detect the end of the existing shapes or to paste directly after ? Thx

Original source