我正在excel VBA中设置一个重复代码,该代码将公式值从一个工作表中复制出来并将这些值粘贴到另一个工作表的运行列表中。我可以将公式复制并粘贴到所需的位置,但是在此代码中我需要更改什么才能仅复制并粘贴值?
我在此代码上尝试了多种变体:
[.Value
在底部的复制和/或粘贴命令之后
.PasteSpecial xlPasteValues
(给出编译错误,预期语句结束)
[.Value
定义要复制的单元格时(产生运行时错误'438')
将我的复制并粘贴变量的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':对象不支持此属性或方法
[如果您能解决此问题,请告诉我!我敢肯定这很简单,但是我已经坚持了一段时间。
[使用PasteSpecial
时,此位需要与Copy
放在单独的行上,如:
copyR.Copy
pasteR.PasteSpecial xlPasteValues
在这种特殊情况下,可以完全避免剪贴板并直接传输该值,该值在代码和操作上都较短。如:
pasteR.value=copyR.value