仅限于Excel VBA复制粘贴值

时间:2019-07-16 07:58:18

标签: excel vba

尝试创建一个文件,该文件可以每天将数据从一张纸传输到另一张纸。我可以进行数据传输,但它也会复制公式,所有单元格都出现 ref错误。如何只复制值而不复制公式。我是VBA的新手,我们将不胜感激。 谢谢

试图使用PasteSpecial代码,但无法使用。

Sub Number1()
'
' Number1 Macro
'
  Set wsCopy = Workbooks("Copy of PLA Failure Results (Macro) Good Test 2.xlsm").Worksheets("Raw Data")
  Set wsDest = Workbooks("Copy of PLA Failure Results (Macro) Good Test 2.xlsm").Worksheets("Stored Data")

  lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A").End(xlUp).Row

  lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Offset(1).Row


  wsCopy.Range("J2:R" & lCopyLastRow).Copy _
  wsDest.Range("A2" & lDestLastRow)


End Sub

3 个答案:

答案 0 :(得分:1)

一些清理代码的方法。一次声明您的工作簿,然后需要在以后的整个过程中进行引用。另外,我认为您的错误发生在您的Paste行中。参见下面的代码(未经测试):

Sub Number1()

    Dim wbGood As Workbook
    Dim wsCopy As Worksheet, wsDest As Worksheet
    Dim lCopyLastRow As Long, lDestLastRow As Long

    Set wbGood = Workbooks("Copy of PLA Failure Results (Macro) Good Test 2.xlsm")

    Set wsCopy = wbGood.Worksheets("Raw Data")
    Set wsDest = wbGood.Worksheets("Stored Data")

    lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A").End(xlUp).Row

    lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Offset(1).Row

    wsCopy.Range("J2:R" & lCopyLastRow).Copy
    wsDest.Range("A" & lDestLastRow).PasteSpecial xlValues

    Application.CutCopyMode = False

End Sub

答案 1 :(得分:0)

在这种情况下,您不需要.Copy。您只需将目标范围的.Value指定为等于复制范围的值,这比复制要快

wsDest.Range("A" & lDestLastRow & ":I" & lDestLastRow + lCopyLastRow - 2).Value = _
             wsCopy.Range("J2:R" & lCopyLastRow).Value

答案 2 :(得分:0)

更改:

wsCopy.Range("J2:R" & lCopyLastRow).Copy _
  wsDest.Range("A2" & lDestLastRow)

使用方式:

wsCopy.Range("J2:R" & lCopyLastRow).Copy
  wsDest.Range("A" & lDestLastRow).PasteSpecial xlPasteValues 

您可以为此使用PasteSpecial,同时也使用A2和lastrow,这是错误的,应该是A和Lastrow