如何解决VBA中工作簿之间的复制和粘贴问题?

时间:2019-04-12 09:27:18

标签: excel vba

我有一个我认为非常简单的问题,不幸的是,目前我对VBA仅有基本的了解。

我正在尝试非常简单地将一系列数据从一个工作簿的工作表的最后一行数据复制并粘贴到另一工作簿的工作表的下一个空白行中(下面提供的表的屏幕截图)。然后,对几个工作表重复此操作,其中工作表名称在两个工作簿中都匹配(希望代码比该解释更有意义)。当我将代码用于许多稍有不同的表和脚本但出于相同的目的时,代码已略作修改。

Sub Hellotheregeneralkenobi()

    Dim wb1 As Workbook
    Dim wb2 As Workbook
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet

    Set wb1 = Workbooks("CallArrivals.xlsm")
    Set wb2 = ActiveWorkbook
    Set ws1 = wb1.Sheets("Online")
    Set ws2 = wb2.Sheets("Online")

             'Last_Row1 = ws1.Range("D" & Rows.Count).End(xlUp).Row
    Last_Row2 = ws2.Range("C" & Rows.Count).End(xlUp).Row + 1

    ws1.Range("d26:L26").Copy
    ws2.Range("C" & Last_Row2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

End Sub

但是,当我在第一张工作表的 第一 时间和 时间内执行此宏时(在这个称为“在线”的示例中,它粘贴了错误的数据选择(请参见下面的错误表屏幕截图)。但是,当我手动删除此粘贴的数据并再次运行代码时,一切运行正常,并且正确的数据被复制(如表屏幕截图所示。

这是怎么回事?我100%确信我只是很愚蠢,在这里缺少了一些难以置信的基本知识。不幸的是,我是唯一一支完全具备任何编码经验(SQL)的团队。

显示错误的表格:

Screenshot showing the error

该表显示了第二次执行后它的工作状态:

enter image description here

该表显示了复制源:

enter image description here

谢谢!

编辑:显示复制数据的表的屏幕快照 Edit: Screenshot of Table Showing Copied Data

1 个答案:

答案 0 :(得分:0)

请参阅我和MasterWu的评论-这应该对您有用(未经测试)

Sub Hellotheregeneralkenobi()

    Dim wb1 As Workbook, wb2 As Workbook
    Dim ws1 As Worksheet, ws2 As Worksheet

    Set wb1 = Workbooks("CallArrivals.xlsm")
    Set wb2 = Workbooks("") 'The name of your workbook you are copying to - maybe use sourceWB and destWB instead of wb1 and wb2
    Set ws1 = wb1.Sheets("Online")
    Set ws2 = wb2.Sheets("Online")

             'Last_Row1 = ws1.Range("D" & Rows.Count).End(xlUp).Row
    Last_Row2 = ws2.Range("C" & Rows.Count).End(xlUp).Row + 1

    ws1.Range("d26:L26").Copy _
        Destination:=ws2.Range("C" & Last_Row2)

End Sub