我使用了一个很好的代码,如下所示:
Copying a range from all files within a folder and pasting into master workbook
我通过提供以下内容将粘贴数据从列更改为行:
shTarget.Cells(1, lRow).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
而不是:
shTarget.Cells(1, lRow).PasteSpecial xlPasteValuesAndNumberFormats
和的工作正常,尽管该范围中的所有内容都大致复制到同一位置。我希望将新数据复制到先前复制的数据(来自目录中的第一个工作簿)下面的第一个空行。
我试着通过下面的例子修改我的代码:
https://www.mrexcel.com/board/threads/vba-paste-new-data-after-last-row.951096/
https://www.exceldemy.com/excel-vba-copy-paste-values-next-empty-row/
Copy and Paste a set range in the next empty row
通过提供如下偏移:
shTarget.Cells(1, lRow).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
但是它并没有像预期的那样工作。数据仍然被多次复制到同一个位置。最后,我在目录中只得到了上一个工作簿中的数据。
我的完整代码如下所示:
Sub CopyData(ByRef shSource As Worksheet, shTarget As Worksheet)
Const Bo As String = "A2:H100"
Dim lRow As Long
lRow = shTarget.Cells(Rows.Count, "A").End(xlUp).Row + 1
shSource.Range(Bo).Copy
shTarget.Cells(1, lRow).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
Application.CutCopyMode = xlCopy
End Sub
如果我更改
lRow = shTarget.Cells(Rows.Count, "A").End(xlUp).Row + 1
至
lRow = shTarget.Cells(Rows.Count, "A").End(xlUp).Offset(1)
那么我就会遇到一个错误:应用程序定义或对象定义错误
是否有任何方法可以累积复制数据?即,第一个工作簿中的数据(无论提供的范围是什么)(A2:A100)只占用范围A2:A10,然后将第二个工作簿中的数据复制到范围A11:A30,依此类推?
1条答案
按热度按时间zvms9eto1#
使用方法复制数据
快速修复:使用End属性(不推荐)
改进:使用Find方法