像这样的东西吗?
Sheet1.Cells(1, 1).Copy
Sheet1.Cells(1, 2).PasteSpecial xlPasteValues
Or
selection.Copy
Sheet1.Cells(1,2).Activate
Selection.PasteSpecial xlPasteValues
Copy
复制整个部分,但我们可以控制粘贴的内容。
同样适用于Range
对象也是如此。
EDIT
AFAIK,没有直接的方法可以仅复制范围的文本而不将其分配给 VBA 对象(变量、数组等)。有一个技巧适用于单个单元格且仅适用于数字和文本(无公式):
Sub test()
Cells(1, 1).Select
Application.SendKeys "{F2}"
Application.SendKeys "+^L"
Application.SendKeys "^C"
Cells(1, 3).Select
Application.SendKeys "^V"
End Sub
但大多数开发人员都会避免SendKeys
因为它可能不稳定且不可预测。例如,上面的代码仅在从 excel 执行宏时有效,而在从VBA
。当运行时VBA
, SendKeys
打开对象浏览器,这就是在 VBA 视图中按下 F2 时所做的事情:) 此外,对于完整范围,您必须循环遍历单元格,将它们一一复制,然后将它们一一粘贴到应用程序中。现在我想得更清楚了,我认为这有点矫枉过正了。
使用数组可能更好。这是我最喜欢的关于如何将范围传递给 vba 数组并返回的参考:http://www.cpearson.com/excel/ArraysAndRanges.aspx
就我个人而言,我会避免SendKeys
并使用数组。应该可以从VBA
数组到应用程序,但在不了解更多有关应用程序的情况下很难说。