excel - 如何使用 VBA 将形状粘贴到 Excel 工作表中的现有形状之后?

标签 excel vba copy-paste shapes

我想复制一个形状并将其粘贴到已包含一个或多个形状的工作表中。我尝试使用以下简单代码:

myShape.Select
Selection.Copy
ActiveWorkbook.Sheets(mySheet).Paste

但它会将其粘贴到工作表中现有形状的上方...

是否有解决方案来检测现有形状的末尾或直接粘贴在之后? 谢谢

最佳答案

这就是你正在尝试的吗?

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

如果有更多形状,那么您将必须循环遍历所有形状,然后找到最后一个形状并考虑该形状的 .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

关于excel - 如何使用 VBA 将形状粘贴到 Excel 工作表中的现有形状之后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10244040/

相关文章:

excel - 向雷达图添加径向线

vba - Workbooks.Open 填充 "source"而不是 "target"文件

vba - 使用宏在Excel的下一行获取一列

vba - 使用 VBA 将区域格式更改为另一种语言

c# - ExcelDna 支持任何事件吗?

excel - ActiveDocument.SaveAs2 在 Excel 2000 中不起作用,但在 2010 和 2016 中正常

excel - VBA 在 Word 对象上使用 Excel 版本的“查找”?

excel - 根据 2 个标准输入将行从一个 Excel 工作表复制到另一个工作表

css - 在 div 中复制粘贴 - contenteditable

audio - 如何在mp4之间复制粘贴音轨