仅限粘贴值,Excel VBA

时间:2012-07-10 12:04:06

标签: excel vba excel-vba

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

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

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

1 个答案:

答案 0 :(得分:5)

您可以“复制”而不实际使用.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

此方法不使用剪贴板,效果更好,也不选择任何内容。正如吉米指出的那样,你不需要With块内的wsRD前缀。