【问题标题】:VBA paste as values - how toVBA 粘贴为值 - 如何
【发布时间】:2018-07-26 06:07:36
【问题描述】:

我有一些 VBA 代码可以从一张纸上复制一个范围,然后在第一个空白行将其粘贴到另一张纸上。它正在复制的是 vlookup 公式,所以当它粘贴时它会粘贴所有 0,我将如何让它将它复制的内容粘贴为值以便保留结果?

代码:

Private Sub PasteChartDataQtyCompare()
'This step pastes the range of values to the chart data tab
    Sheets(1).Range("A6:J22").Copy _
    Destination:=Sheets("Chart Data").Cells(Sheets("Chart Data").Rows.Count, 1).End(xlUp).Offset(1, 0)
End Sub

【问题讨论】:

  • 只需将范围设置为彼此相等(注意它们的大小必须相同),例如Range([destination range]).Value = Range([copy from range]).Value
  • 你不应该使用目的地。请改用 PasteSpecial xlPasteValues
  • 那么我是否可以将 Destination 替换为 PasteSpecial xlPasteValues?我从来没有使用过它,对于在代码中添加它的位置有点困惑

标签: excel vba


【解决方案1】:

直接绕过剪贴板传输值。

Private Sub PasteChartDataQtyCompare()
    'This step pastes the range of values to the chart data tab
    with workSheets(1).Range("A6:J22")
        workSheets("Chart Data").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).resize(.rows.count,.columns.count) = .value
    end with
End Sub

【讨论】:

  • 确实,这是更有效的方法。
【解决方案2】:

使用范围方法“Range.PasteSpecial xlPasteValue”

例子:

Sheets("Sheet1").Columns("A").Copy
Sheets("Sheet2").Columns("B").PasteSpecial xlPasteValues

【讨论】:

    【解决方案3】:

    你想用

    .PasteSpecial xlPasteValues
    

    这里详细回答了一个类似的问题:Excel VBA Copy Paste Values only( xlPasteValues )

    【讨论】:

    • 谢谢。我不熟悉,我将它添加到代码的末尾吗?
    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多