Excel VBA复制/粘贴错误
我试图将多个工作表中的数据合并为一个,使用描述的方法here。Excel VBA复制/粘贴错误
的差异我只想从复制因此每个文件数据的单一专栏中,我已经修改了我的代码这样的:
With wsMaster
erow = .Range("B" & .Rows.Count).End(xlUp).Row 'get the last row in column B
'~~> Copy from the file you opened
wsTemp.Range("A2:A" & .Rows.Count).Copy 'copy data in column A starting at row 2
'to however long the data runs for
'~~> Paste on your master sheet below last used row in column B
.Range("B" & erow).Offset(1, 0).PasteSpecial xlPasteValues
End With
这适用于第一次迭代(它复制的第一个源文件正确),但当它到达第二个源文件时,它会抛出一个错误“运行时错误'1004':PasteSpecial方法或Range类失败”。
当处于调试模式时,我尝试手动点击并Ctrl + V复制的数据,它表示范围的大小/形状不匹配。但是,如果我点击第2行或以上的任何单元格,它会粘贴在宏中复制的数据,而不会抱怨。
任何想法?
wsTemp.Range("A2:A" & .Rows.Count).Copy
此行引起问题,请chenge这
wsTemp.Range("A2:A" & Range("A2").SpecialCells(xlCellTypeLastCell).Row).Copy
当你嵌套在With wsMaster
里面就意味着你加入With
语句中的前缀.
所有对象,是与此对象相关(wsMaster
工作表)。
所以,你在哪里试图寻找最后一排的第一个地方是正确
erow = .Range("B" & .Rows.Count).End(xlUp).Row 'get the last row in column B
但第二个地方,在那里你正试图从一个不同的表复印件(wsTemp
工作表),是不是正确。下面的行:
wsTemp.Range("A2:A" & .Rows.Count).Copy 'copy data in column A starting at row 2
就是说.Rows.Count
在wsMaster
片(而不是wsTemp
)寻找行的计数。
所以您需要更改该行:我更喜欢以下语法所有占用的单元格复制列“A”
wsTemp.Range("A2:A" & wsTemp.Rows.Count).Copy
:
wsTemp.Range("A2:A" & wsTemp.Cells(wsTemp.Rows.Count, "A").End(xlUp).Row).Copy
谢谢谢。 'wsTemp.Range(“A2:A”&wsTemp.Rows.Count).Copy'不起作用。 但是'wsTemp.Range(“A2:A”&wsTemp.Cells(wsTemp.Rows.Count,“A”).End(xlUp).Row).Copy'确实。 我把克里斯的回答标记为答案,因为他早一点。 –
@EP没关系,就你所知,使用xlCellTypeLastCell.Row可能不是获得最后一行的最可靠的方法 –
这个工作。谢谢! –