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方法或范围类失败”。
在debugging模式下,我尝试手动点击和Ctrl + V复制的数据,它说,范围的大小/形状不匹配。 但是,如果我点击第2行以上的任何单元格,它将粘贴在macros中的数据粘贴起来,而不会抱怨。
有任何想法吗?
wsTemp.Range("A2:A" & .Rows.Count).Copy
这条线路引起问题,请给这个问题
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
)。
所以你需要改变这一行:
wsTemp.Range("A2:A" & wsTemp.Rows.Count).Copy
我更喜欢以下语法来复制列“A”中的所有占用的单元格:
wsTemp.Range("A2:A" & wsTemp.Cells(wsTemp.Rows.Count, "A").End(xlUp).Row).Copy