粘贴值,Excel VBA

我有这个脚本,我已经帮忙,但现在来了一个问题。 我试图只粘贴值,而不是在单元格内的公式到另一个单元格。

我认为将.Value放在公式的末尾会告诉脚本只粘贴值…似乎不是。 有人可以给我一个关于如何使这项工作的build议吗?

Option Explicit Sub ONJL() Dim lastrow As Long Dim wsPAR As Worksheet 'PAERTO Dim wsRD As Worksheet 'Raw Data Dim wsTEM As Worksheet 'Archive Set wsPAR = Sheets("PAERTO") Set wsRD = Sheets("Raw Data") Set wsTEM = Sheets("Template") With wsRD Application.ScreenUpdating = False lastrow = .Range("J" & .Rows.Count).End(xlUp).Row wsRD.Range("J" & lastrow + 1).Formula = Date wsRD.Range("B2").Copy wsRD.Range("K" & lastrow + 1).Value wsRD.Range("B3").Copy wsRD.Range("L" & lastrow + 1).Value wsRD.Range("E2").Copy wsRD.Range("M" & lastrow + 1).Value wsRD.Range("E3").Copy wsRD.Range("N" & lastrow + 1).Value wsRD.Range("H2").Copy wsRD.Range("O" & lastrow + 1).Value wsRD.Range("H3").Copy wsRD.Range("P" & lastrow + 1).Value wsRD.Range("Q1:T1").Copy wsRD.Range("Q" & lastrow + 1) Application.ScreenUpdating = False End With End Sub 

你可以“复制”而不用实际使用。 .Copy如下:

 Sub CopyWithoutCopying() Dim wsRD As Worksheet Dim lastrow As Long Set wsRD = Sheets("Raw Data") With wsRD lastrow = .Range("J" & .Rows.Count).End(xlUp).Row .Range("K" & lastrow + 1).Value = .Range("B2").Value .Range("L" & lastrow + 1).Value = .Range("B3").Value ' etc... End With End Sub 

这种方法不使用剪贴板,性能更好,不会select任何东西。 正如Jimmy所指出的那样,您不需要With块中的wsRD前缀。