【问题标题】:Copy values, not formulas, on a worksheet to another将工作表上的值而不是公式复制到另一个工作表
【发布时间】:2018-05-01 22:21:25
【问题描述】:

我添加了一个宏来将一个工作表复制到另一个工作表,以便在该点之后所做的任何更改都可以与原始文件进行比较。但是,我的宏会复制公式而不仅仅是值,所以当某些东西发生变化时,两张表都会发生变化,并且副本没有任何作用。我所拥有的是:

Worksheets("First Sheet").Cells.Copy _
Destination:=Worksheets("Second Sheet").Cells

有没有简单的方法来解决这个问题?谢谢!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您需要使用 Copy >> PasteSpecial 并仅粘贴值,这是一个 2 行语法:

    Worksheets("First Sheet").Cells.Copy
    Worksheets("Second Sheet").Cells.PasteSpecial xlPasteValues
    

    【讨论】:

    • 如果你考虑Application.CutCopyMode = False那么它将是三行语法。
    • @shrivallabha.redij 是的,如果我添加Application.ScreenUpdating = False 然后打开它会是5,选项无穷无尽...
    • 我是从 CutCopyMode 闪烁继续的观点写的,如果没有添加 'Application.CutCopyMode = False' 行。 OP 的单行代码不会发生这种情况。
    • 这给了我“此操作要求合并的单元格大小相同”错误,但它们的大小绝对相同,因为我试图将其复制到的工作表是原件。
    【解决方案2】:

    在你的宏之后,你可以写这个:

    With Worksheets("First Sheet")
        Worksheets("Second Sheet").Range(.UsedRange.Address).Cells.Value2 = .UsedRange.Value2
    End With
    

    它获取第一张纸的值并将它们放到第二张纸上。需要UsedRange 的技巧,因为Worksheets(2).Cells.Value2 = Worksheets(1).Cells.Value2 超出了普通PC 的通常资源。

    【讨论】:

    • @UncleBajubjubs - 欢迎。而且它比复制值要快得多。
    【解决方案3】:

    这将跳过第一张表中的所有公式单元格:

    Sub KopyKat()
        Dim r As Range, addy As String
        For Each r In Worksheets("First Sheet").Cells.SpecialCells(2)
            addy = r.Address
            r.Copy Destination:=Worksheets("Second Sheet").Range(addy)
        Next r
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多