Excel宏可以复制,删除和粘贴而不会丢失复制值

Sel*_*rac 2 excel vba excel-vba

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

这是代码的示例:

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
Run Code Online (Sandbox Code Playgroud)

考虑到我不能先清除内容,有没有办法存储Range("A1:B3")的内容,以便我以后可以粘贴它?

Cal*_*mDA 5

显而易见的答案是:按其他顺序执行.也没有必要使用Select

Range("C1:D3").ClearContents
Range("A1:B3").Copy Range("C1")
Run Code Online (Sandbox Code Playgroud)

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

With ThisWorkbook.Worksheets("Sheet1")
    .Range("C1:D3").ClearContents
    .Range("A1:B3").Copy .Range("C1")
End With
Run Code Online (Sandbox Code Playgroud)

如果出于某种原因(?),您只能在...之后清除内容.您可以将值存储在这样的变量中

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