首页 > 解决方案 > 在工作簿和工作表之间复制

问题描述

我正在尝试将动态范围从一个 workbook1 sheet1 复制到 workbook2 sheet2。该代码有效,但仅当我激活 workbook1 sheet1 时,如果我激活 workbook1 sheet2,则代码失败。

我的代码是:

Sub CopyOrders()


    Dim wB1 As Worksheet
    Set wB1 = Workbooks("Master.xlsx").Worksheets("Data")

    Dim RngCe1 As Range
    Set RngCe1 = wB1.Cells(Rows.Count, "B").End(xlUp).Offset(0, 11)

    Dim RngCe2 As Range
    Set RngCe2 = wB1.Range("A1:A7000").FIND("Grand Total", LookAt:=xlPart).Offset(-1, 23)

    Dim NewRng As Range
    Set NewRng = Range(RngCe1.Address & ":" & RngCe2.Address)

    Dim wB2 As Worksheet
    Set wB2 = Workbooks("Report.xlsx").Worksheets("Orders")

    Dim DesRng As Range
    Set DesRng = wB2.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(, 12)

    NewRng.Copy
    DesRng.PasteSpecial xlPasteValues


End Sub

标签: excelvba

解决方案


问题出在这里:

Set DesRng = wB2.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(, 12)

您无需Rows.Count在此处指定工作表,否则将使用活动工作表。所以wB2.Rows.Count会做的伎俩。

仍然:您正在定义工作变量并将它们称为 w B 2。为了清楚起见,考虑将它们重命名为 w S 2。


推荐阅读