我试图粘贴我之前复制过的某些值,但是我在预先清除目标单元格时丢失了数据。
这是代码示例:
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")以便我以后可以粘贴它?
答案 0 :(得分:5)
显而易见的答案是:按照其他顺序执行。此外,无需使用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
如果出于某种原因(?),您只能在...后清除内容。您可以将值存储在这样的变量中
With ThisWorkbook.Worksheets("Sheet1")
Dim v as Variant
v = .Range("A1:B3").Value
.Range("C1:D3").ClearContents
.Range("C1:D3").Value = v
End With
答案 1 :(得分:0)
你可以通过预先粘贴其他地方的范围来解决这个问题。
Range("A1:B3").Copy Range("F1")
Range("C1:D3").ClearContents
Range("F1:G3").Cut Range("C1")
答案 2 :(得分:0)
您犯的错误是,它引用复制数据的单元格,而不是将其移动到剪贴板或内存中。尝试这样的事情。
dim SelectionSave as string
Range("A1:B3").Select
SelectionSave = activecell.value
Range("C1:D3").Select
Selection.ClearContents
Range("C1").Select
activecell.value = SelectionSave
如果您清除单元格中的内容,则引用的是空单元格,如果先将内容保存到内存中,则可以在清除后将这些内容移回单元格中。