【发布时间】:2019-11-12 21:10:54
【问题描述】:
我正在使用 excel VBA 设置重复代码,该代码将从一个工作表中复制公式值并将这些值粘贴到另一个工作表上的运行列表中。我可以将公式复制并粘贴到所需位置,但我需要在此代码中进行哪些更改才能仅复制和粘贴值?
我已经对此代码尝试了多种变体:
.Value在底部复制和/或粘贴命令之后.PasteSpecial xlPasteValues(给出编译错误,预期语句结束).Value定义要复制的单元格时(这会导致运行时错误“438”)将我的复制和粘贴变量的
Dim类型更改为 Variants、Strings 和 Range
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 我会得到 p>
运行时错误“438”:对象不支持此属性或方法
如果您发现任何可以解决此问题的方法,请告诉我!我敢肯定这很简单,但我在这个问题上已经卡了一段时间了。
【问题讨论】:
-
把 pastespecial 放在新的一行
-
或者只是
pasteR.value=copyr.value。 -
@SJR pasteR.Value=copyR.Value 修复它。谢谢!我想这可能很简单。 'pasteR.Value = copyR.Value pasteT.Value = copyT.Value
-
提示,也许@SJR 应该将建议作为答案发布,或者您可以自行回答问题以结束而不是更改标题。第一个选项会将功劳返还给助手。 =)
-
@SJR 如果您将此作为答案提交,我会接受。谢谢!
标签: excel vba copy-paste