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

このアプローチでは、クリップボードを使用せず、パフォーマンスが向上し、何も選択されません。そして、ジミーが指摘しているように、Withブロック内にwsRDプレフィックスは必要ありません。

于 2012-07-10T12:37:16.153 に答える