【问题标题】:Copy and paste unknow range into a different worksheet in excel using vba使用vba将未知范围复制并粘贴到excel中的不同工作表中
【发布时间】:2013-06-21 18:00:57
【问题描述】:

我正在尝试编写代码来复制未知数量的行并将其粘贴到单独工作表中的特定位置。到目前为止,我看到了下面的代码。我想从 A:F 列复制数据,获取未知的行数,然后从 H6 开始粘贴。我在代码“Range("A1", lastrow).Select" 中遇到错误。错误是“对象工作表的方法范围失败”。感谢所有帮助。

Dim lastrow As Long
Dim copyrange As Range

lastrow = Range("A65536").End(xlUp).Select
 Range("A1", lastrow).Select
    Selection.Copy
    Sheets("Final").Select
    Range("H6").Select
    ActiveSheet.Paste
End Sub

【问题讨论】:

  • 您需要复制它(保留格式/等)还是只传输值可以?
  • 如有必要,只需传输值即可。

标签: vba copy-paste


【解决方案1】:

如果你要调试它,你会发现lastRow 的值是-1。摆脱那里的.Select(就此而言,无处不在)。您的 range.Copy 也有错误,我已修复:

Sub Test()
Dim lastrow As Long

   lastrow = Range("A65536").End(xlUp).Row
   Range("A1:F" & lastrow).Copy Destination:=Sheets("Final").Range("H6")

End Sub

或者,只是转移值,我认为这会做到(未经测试):

Sub Test2()
Dim copyRange as Range
   Set copyRange = Range("A1:F" & Range("A65536").End(xlUp).Row)
   With copyRange
       Sheets("Final").Range("H6").Resize(.Rows.Count, .Columns.Count).Value = .Value
   End With
End Sub

【讨论】:

  • 感谢您的回复。当我运行您的代码时,我在“lastrow= Range("A65536").End(xlUp). 行出现类型不匹配错误。当我调试它时,它只是将不正确的代码行变为黄色并告诉我错误类型.. 我是 VBA 新手
  • 改用Range("A65536").End(xlUp).Row,我修改了我的答案。
  • 我刚刚突出显示并准确复制了您的代码并粘贴了它。如果您想完全按照我的方式看待它,我可以将我的 Excel 表发送给您,我正在尝试使用示例数据来解决它。两个代码都不起作用
  • 你看到我的修改lastrow = Range("A65536").End(xlUp).Row了吗?
  • 很抱歉让你带我完成它,我还在经历刚开始使用 VBA 的成长阵痛,非常感谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
相关资源
最近更新 更多