Worksheet.Paste和Range.PasteSpecial之间的区别

时间:2015-08-06 07:55:28

标签: excel vba excel-vba

我注意到两者之间的一个区别是Worksheet.Paste会复制对象(图表,按钮等),而Range.PasteSpecial xlPasteAll似乎不会这样做。还有其他差异吗?这种差异有一个很好的解释吗?因此,如果我想复制和粘贴对象/控件以及单元格,我是否必须Worksheet.Paste?令人讨厌的是,您必须激活该工作表并选择目标单元格。还是有更好的方法?谢谢!

1 个答案:

答案 0 :(得分:4)

您可以操作Excel中的任何对象(图表,形状,控件等) 建议始终直接在对象上工作。请考虑以下内容。

Dim sh As Shape
Set sh = Sheet1.Shapes("Oval 1") 

sh.Copy
With Sheet2
    .Paste .Range("A1")
End With

在上面的示例中,您要将Sheet1中的 Shape - Oval 1 复制到Sheet2单元格A1。
所以我们做的是抓住 Shape 对象并使用它的方法来执行我们想要的东西。

因此,让Range.PasteSpecial作为范围对象的方法实现其目的,并让其他对象执行相同的操作,就像我们上面所做的那样,我们真的不需要使用选择或激活。简而言之,只需使用对象的属性和方法即可单独使用对象。