0

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

我认为将 .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
4

1 回答 1

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

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

于 2012-07-10T12:37:16.153 回答