我要做的是打开一个工作簿,将所有数据复制到它的第一张工作表上,然后将该数据添加到另一张工作簿中工作表的第一行上。粘贴数据时似乎遇到了问题,但我不完全理解为什么。我已经运行了代码,只是复制了工作表的第一行,然后使用我的方法来找到第一个空行并将其粘贴到上面,这已经奏效了,所以我对复制/选择日期必须有所了解。 / p>
这是代码:
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列中找到最后使用的行,再往下走(第一个空单元格)并选择它。但是随后我的粘贴尝试因错误而停止。
任何帮助/更好的方法将不胜感激!
答案 0 :(得分:0)
Cells.Select
Selection.Copy
ALL Cells
而不粘贴A1
导致出现此错误。因此,错误。您正在尝试将较大的object
放入较小的object
中。通过在第一张工作表中查找最后一行,然后确定要复制的范围,然后进行相应的粘贴,来处理实际的范围对象而不是All Cells
。.Select/Activate
。您可能需要查看How to avoid using Select in Excel VBA 您的代码可以写为(未测试)
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