Excel VBA中的复制和粘贴单元格值:编译和运行时错误

问题描述 投票:0回答:1

我正在excel VBA中设置一个重复代码,该代码将公式值从一个工作表中复制出来并将这些值粘贴到另一个工作表的运行列表中。我可以将公式复制并粘贴到所需的位置,但是在此代码中我需要更改什么才能仅复制并粘贴值?

我在此代码上尝试了多种变体:

  1. [.Value在底部的复制和/或粘贴命令之后

  2. .PasteSpecial xlPasteValues(给出编译错误,预期语句结束)

  3. [.Value定义要复制的单元格时(产生运行时错误'438')

  4. 将我的复制并粘贴变量的Dim类型更改为变量,字符串和范围


Sub snapShot()
    Dim sourceSheet As String, destinationSheet As String
    Dim copyR As Range, copyT As Range
    Dim pasteR As Range, pasteT As Range
    sourceSheet = "REPORT"
    destinationSheet = "Historical Changes"

    Set copyR = Worksheets(sourceSheet).Range("I2")
    Set copyT = Worksheets(sourceSheet).Range("I3")

    With Sheets(destinationSheet)
        Set pasteR = .Cells(.Rows.Count, 1).End(xlUp)(2, 1)
        Set pasteT = .Cells(.Rows.Count, 1).End(xlUp)(2, 2)
    End With

    copyR.Copy pasteR.PasteSpecial xlPasteValues 'Compile Error: Expected: End of Statement
    copyT.Copy pasteT.PasteSpecial xlPasteValues 'Compile Error: Expected: End of Statement
    pasteT.Columns(2) = Now() 'This gives a time stamp next the my columns
    Application.OnTime Now() + TimeValue("24:00:00"), "snapShot"

End Sub

如果删除.PasteSpecial xlPasteValues,我的代码将可以正常工作以复制和粘贴公式,但是由于我需要时间戳数据,因此我只需要值,而不需要公式。我目前正在得到

编译错误:预期:语句结束

如果将其更改为.Values,则会得到

运行时错误'438':对象不支持此属性或方法

[如果您能解决此问题,请告诉我!我敢肯定这很简单,但是我已经坚持了一段时间。

excel vba copy-paste
1个回答
0
投票

[使用PasteSpecial时,此位需要与Copy放在单独的行上,如:

copyR.Copy
pasteR.PasteSpecial xlPasteValues

在这种特殊情况下,可以完全避免剪贴板并直接传输该值,该值在代码和操作上都较短。如:

pasteR.value=copyR.value
© www.soinside.com 2019 - 2024. All rights reserved.