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

我想复制一个形状并粘贴一张已经包含一个或多个形状的表单。 我尝试使用以下简单的代码:

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

但它将其粘贴在表单中现有的形状上面…

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

这是你正在尝试?

 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 

如果有更多的形状,那么你将不得不遍历所有的形状,然后find最后的形状,并采取该形状的.Height和。 .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