【问题标题】:Copy Area and Paste Area Aren't The Same Size Error?复制区域和粘贴区域大小不一样?
【发布时间】:2013-09-05 21:31:22
【问题描述】:

我希望 VBA 在 Sheet1 中找到名为“Apple”的单元格标题(在行 a1 中)并将该数据粘贴到名为“Sheet2 中的橙色”的单元格标题中

Sheet1     Sheet2

Apple      Orange
1
2
3
4

我试图不包含单元格标题,因此它只获取数字。

像下面这样的东西会起作用吗?

Sheet1.Rows("1:1").Find(What:="Apple", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
Selection.EntireColumn row-1.Copy sheet2.range("a2")

类似entirecolumn row -1 这样它就不会复制标题单元格...
不知道我在做什么,但帮助会很棒!

【问题讨论】:

  • @pnuts 这是一个聪明的方法。当然,假设a1 中没有重要数据。
  • 在得到答案后你不能完全改变问题(顺便说一句,在我看来,你的新问题已经解决了)。我现在将删除我的答案(因为不喜欢你的态度)。
  • @pnuts 他是否选择了正确的答案,建议写“;”在 VBA 行的末尾?! (并说它不起作用;并让另一个回答者提供有效的答案?)哇!现在我明白了很多,谢谢:)

标签: vba excel excel-2010


【解决方案1】:

使用此命令:c = ActiveCell.Column 您将c 设置为当前活动单元格的整个列。接下来,当您使用s1.Columns(c).Copy s2.Range("a2") 时,您将复制存储在c 中的整个列,然后尝试将其粘贴到指定列范围(a2) 中的第二个单元格中。这导致它总是比您复制到剪贴板的单元格少一个。

【讨论】:

  • 很抱歉纠正你,但唯一负责的位是 s1.Columns(c)。 c = ActiveCell.Column 没有任何影响。 c = 1 会做同样的事情。
  • 没错,但这就是我认为发生误解的地方。我读了这篇文章,因为他们假设该列只会被复制到他们选择的地方,但随后他们在复制/粘贴命令中传递了整个列的引用。我已经更新了我的答案,以便更清楚地说明这一点。
  • 好。我另有看法:我的印象是 OP 想要的是复制从上面的“查找”产生的范围。更具体地说,他想复制该范围的一列(大概由不同的列组成)。对于 (c) 列的确切定义,他也很可能是错误的。他认为仅通过执行 Find s1.Columns(c) 将考虑输出范围而不是整个电子表格。
猜你喜欢
  • 2020-05-19
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多