首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel VBA复制/粘贴错误

Excel VBA复制/粘贴错误
EN

Stack Overflow用户
提问于 2017-06-22 04:33:42
回答 2查看 1.9K关注 0票数 0

我试图使用描述这里的方法将多个工作表中的数据合并为一个工作表。

不同之处在于,我只想从每个文件中复制一列数据,因此我修改了代码,因此:

代码语言:javascript
复制
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方法或范围类失败”。

在调试模式下,我尝试手动单击并Ctrl+V复制的数据,它表示范围的大小/形状不匹配。但是--如果我在第2行或第2行以上的任何单元格中单击,它会粘贴它在宏中复制的数据,而不会发出任何抱怨。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-22 05:22:03

wsTemp.Range("A2:A" & .Rows.Count).Copy

这一行造成问题,请把这个

wsTemp.Range("A2:A" & Range("A2").SpecialCells(xlCellTypeLastCell).Row).Copy

票数 0
EN

Stack Overflow用户

发布于 2017-06-22 05:35:06

当您嵌套在With wsMaster中时,意味着在With语句中添加前缀.的所有对象都与此对象(wsMaster工作表)相关。

因此,您试图查找最后一行的第一个位置是正确的。

代码语言:javascript
复制
erow = .Range("B" & .Rows.Count).End(xlUp).Row 'get the last row in column B

但是第二个地方,您试图从不同的工作表(从wsTemp工作表)复制,是不正确的。以下一行:

代码语言:javascript
复制
wsTemp.Range("A2:A" & .Rows.Count).Copy 'copy data in column A starting at row 2

意味着.Rows.Count正在查找wsMaster工作表中的行数(而不是wsTemp)。

因此,您需要将该行更改为:

代码语言:javascript
复制
wsTemp.Range("A2:A" & wsTemp.Rows.Count).Copy

我更喜欢以下语法来复制“A”列中所有占用的单元格:

代码语言:javascript
复制
wsTemp.Range("A2:A" & wsTemp.Cells(wsTemp.Rows.Count, "A").End(xlUp).Row).Copy
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44690212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档