0

我想要做的是打开一个工作簿,复制它的第一张工作表上的所有数据,然后将该数据添加到另一个工作簿中工作表的第一个空行。粘贴数据时我似乎遇到了问题,但我不完全明白为什么。我已经运行了代码,只是复制了工作表的第一行,然后使用我的方法找到了第一个空行并将其粘贴到那里,这已经奏效了,所以我必须了解我如何复制/选择我的日期。

这是代码:

    MyFile6.Activate
MyFile6.Worksheets(1).Activate
Cells.Select
Selection.Copy
Windows("Frávikagreining.xlsm").Activate
Sheets("Laun").Select
Dim Rng As Long
Rng = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(Rng, 1).Select
ActiveSheet.Paste

我已经定义并打开了工作簿“MyFile6”(此处未显示代码)。因此,我将数据复制到此工作簿 MyFile6 的第一张工作表上,然后在另一个工作簿上打开工作表“Laun”,在 A 列中找到最后使用的行,再往下走(第一个空单元格)并选择它。但是后来我的粘贴尝试因错误而停止。

任何帮助/更好的方法将不胜感激!

4

1 回答 1

0
Cells.Select
Selection.Copy
  1. 您收到该错误是因为您正在复制ALL Cells而不是粘贴A1. 因此错误。您正在尝试将更大objectobject. 使用真实的范围对象,而不是All Cells在第一张表中找到最后一行,然后确定要复制的范围,然后相应地粘贴。
  2. 还要避免使用.Select/Activate. 您可能想查看如何避免在 Excel VBA 中使用 Select

您的代码可以写成 ( UNTESTED )

Dim lRow As Long, lCol As Long
Dim rngToCopy As Range
Dim thatWb As Workbook

'~~> Destination Workbook
Set thatWb = Workbooks("Frávikagreining.xlsm")

With MyFile6.Worksheets(1)
    '~~> Find last row and column
    lRow = .Range("A" & .Rows.Count).End(xlUp).Row
    lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column

    '~~> Set your range to copy
    Set rngToCopy = .Range(.Cells(1, 1), .Cells(lRow, lCol))
End With

With thatWb.Sheets("Laun")
    '~~> find last row in destination sheet for pasting
    lRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1

    '~~> Copy and paste
    rngToCopy.Copy .Range("A" & lRow)
End With
于 2019-02-15T12:32:30.850 回答