Excelmacros复制,删除和粘贴,而不会丢失复制值

我试图粘贴一些我之前复制的值,但是我正在丢失数据,因为我正事先清除目标单元格。

这是代码的一个例子:

Range("A1:B3").Select Selection.Copy Range("C1:D3").Select Selection.ClearContents 'At this point the clipboard is cleared Range("C1").Select ActiveSheet.Paste 'I get an error here as the clipboard has been cleared 

考虑到我不能先清除内容,有没有办法将Range(“A1:B3”)的内容存储起来,以便以后粘贴?

显而易见的答案是:以其他顺序进行。 也没有必要使用Select

 Range("C1:D3").ClearContents Range("A1:B3").Copy Range("C1") 

此外,你应该尝试完全限定你的范围。 也就是说,这些范围的确切位置。

 With ThisWorkbook.Worksheets("Sheet1") .Range("C1:D3").ClearContents .Range("A1:B3").Copy .Range("C1") End With 

如果由于某种原因(?),只能在…之后清除内容。您可以将值存储在像这样的variables中

 With ThisWorkbook.Worksheets("Sheet1") Dim v as Variant v = .Range("A1:B3").Value .Range("C1:D3").ClearContents .Range("C1:D3").Value = v End With 

您可以事先在其他地方粘贴该范围。

 Range("A1:B3").Copy Range("F1") Range("C1:D3").ClearContents Range("F1:G3").Cut Range("C1")