【问题标题】:How to Copy/Paste to next empty row?如何复制/粘贴到下一个空行?
【发布时间】:2019-12-21 11:06:23
【问题描述】:

我有代码复制工作表 A,列 A:C(没有设置行数量,这将被重复使用并且数量会改变)并粘贴到同一工作簿、不同工作表、工作表中的第一个空白行B(这也没有设置行数量并且会改变)。

工作表 B 在我要粘贴到的相同列中有一个公式,如果没有数据,则返回“”。我认为 VBA 看到了“”并假设那里有数据;但是,即使没有上述公式,它也不会粘贴到行上。

Sub Copy_Created_Fringe_Accounts()
    Dim SourceRange As Range
    Dim DestRange As Range
    Dim DestSheet As Worksheet
    Dim LastRow As Long

'Source sheet and range
    Set SourceRange = Sheets("CREATED FRINGE ACCTS").Range("A2:C500")

'Destination sheet and range
    Set DestSheet = Sheets("99 BUDGET WORKSHEET")

'Last Row
    LastRow = DestSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

'Copy and paste to destination
    Set DestRange = DestSheet.Range("A" & LastRow + 1)
    SourceRange.Copy DestRange

End Sub

当我运行它时没有任何反应。我希望看到工作表 A 中的数据从第一个可用的空行开始复制到工作表 B。

我对 VBA 还很陌生,因此感谢任何帮助/理解。

【问题讨论】:

  • 您是否使用过Debug.Print LastRow 来确定它返回的内容?
  • 我没有;我不熟悉它或它是如何使用的;这是我要添加到现有 VBA 中的内容吗(上面包含的内容)?
  • 设置LastRow后添加。它会在您的编辑器中的立即窗口中打印一个数字。但是,为什么不调整单元格中的公式以返回类似“PASTE”而不是“”??

标签: excel vba copy paste


【解决方案1】:

查找最后一行

尝试使用UsedRange 查找最后使用的行,因为这比使用Find 更安全。

LastRow = DestSheet.UsedRange.Rows.Count


附注

如果您的代码与这些工作表位于同一位置,那么我建议您使用它们的code name。如果工作表不存在,这将防止您遇到错误。

【讨论】:

  • 不走运。我确实运行了一个简单的 VBA 代码以确保没有其他问题发生。不确定我是否应该丢弃我的代码并从头开始,或者我是否缺少一些小东西。
  • 我已经在许多不同的工作表上对此进行了测试,并且运行正常。您有正在使用的工作表的示例吗?
  • 请原谅我对 SO 的工作原理缺乏了解 - 你是在向我要文件,我可以分享 - 如果我能弄清楚如何上传,还是你要屏幕截图?
猜你喜欢
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
相关资源
最近更新 更多