Excel 尝试将列复制到新工作簿时显示错误

Excel 尝试将列复制到新工作簿时显示错误,excel,vba,Excel,Vba,我正在尝试使用以下代码将一系列列复制到新工作簿中: Sub Rlaunch() Dim r1 As Range, r2 As Range Set r1 = Worksheets("CAPEX").Range("A:F") r1.Copy Set wbNew = Workbooks.Add With wbNew Set r2 = Range("A1") r2.Paste

我正在尝试使用以下代码将一系列列复制到新工作簿中:

Sub Rlaunch()
Dim r1 As Range, r2 As Range

    Set r1 = Worksheets("CAPEX").Range("A:F")
    r1.Copy
    
    Set wbNew = Workbooks.Add
    
    With wbNew
    Set r2 = Range("A1")
    r2.PasteSpecial.xlPasteValues
    End With
    
End Sub
代码正在运行,但我发现两个问题:

  • 它将列粘贴到我想要的位置,但我在下面的代码行中得到“运行时错误'424':需要对象”:
  • 此外,代码仍在从源代码手册中复制公式,我不想在新工作簿中复制这些公式(它们在E列中),即使我使用的是XLPasteValue
  • 我如何解决这两个问题


    谢谢。

    如果要粘贴到新工作簿,需要定义工作表。还建议仅移动非空单元格。 此使用阵列的替代版本可以实现您想要的功能,而且速度更快:

        Option Explicit
        Sub copyRng()
            Dim arr, wbNew As Workbook, wsNew, lastrow As Long
            lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row 'Find last row in column A
            arr = Sheet1.Range("A1:F" & lastrow).Value2
            Set wbNew = Workbooks.Add
            Set wsNew = wbNew.Sheets(1)
            With wsNew
                .Range(.Cells(1, 1), .Cells(UBound(arr), UBound(arr, 2))) = arr
            End With
        End Sub
    

    谢谢你的回答!
        Option Explicit
        Sub copyRng()
            Dim arr, wbNew As Workbook, wsNew, lastrow As Long
            lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row 'Find last row in column A
            arr = Sheet1.Range("A1:F" & lastrow).Value2
            Set wbNew = Workbooks.Add
            Set wsNew = wbNew.Sheets(1)
            With wsNew
                .Range(.Cells(1, 1), .Cells(UBound(arr), UBound(arr, 2))) = arr
            End With
        End Sub