【问题标题】:Macro Button that when clicked will copy range of cells and paste to next blank row of another worksheet单击时将复制单元格范围并粘贴到另一个工作表的下一个空白行的宏按钮
【发布时间】:2017-08-29 00:51:49
【问题描述】:

我的电子表格中有一个 PAYMENT 列和一个 MASTER LIST OF PAYMENT 列。 PAYMENT 列在 INPUT 工作表中,而 MASTER LIST 列在 CASHFLOW 工作表中。这个想法是将输入范围从 PAYMENT 列复制到 MASTER LIST 列,粘贴 MASTER LIST 列的下一个空白行。

例如: 进行了 3 次付款,数据在 A1:A3 中。将 A1:A3 复制到 MASTER LIST 列 A8:A10。再次支付了 3 笔款项。但由于 MASTER LIST 列 A8:A10 已经有以前的数据。这次数据将被粘贴到 A11:A13。等等。

到目前为止,我已经编写了以下代码,但我只成功复制并粘贴了一行(范围的第一行)。我尝试编辑它以复制单元格范围,但它给了我一个错误。有什么建议么?谢谢!

Sub PAYMENTS_TRANSFER()
Response = MsgBox("Are you sure?", vbYesNo)
If Response = vbNo Then Exit Sub
Dim nextrow As Long
nextrow = Worksheets("Cashflow").Cells(Rows.Count, "A").End(xlUp).Row + 1
If nextrow < 8 Then nextrow = 8
Worksheets("Cashflow").Range("A" & nextrow).Value = Worksheets("Input").Range("A1").Value
End Sub

【问题讨论】:

  • MASTER LIST 列获取最后使用的行号并相应地粘贴您的值。
  • 付款工作表是否像主列表工作表一样是动态列表?
  • @ManishChristian 嗨,我希望 VBA 自动粘贴它,因为我的数据非常大,手动粘贴很麻烦。
  • @RafaelMatos 你好。不,我的电子表格中的付款列是静态的,实际上它始终来自 B73:B82。在我上面的例子中,它总是 A1:A3。但是将在那里输入的数据可能并不总是相同的。就像有时只输入1个数据,有时有3-4个数据,等等。

标签: vba excel


【解决方案1】:

您没有复制整个范围,因为您没有工作表(“输入”)中的底部行号。 试试这个:

    Sub PAYMENTS_TRANSFER()
    Response = MsgBox("Are you sure?", vbYesNo)
    If Response = vbNo Then Exit Sub
    Dim nextrow As Long
    nextrow = Worksheets("Cashflow").Cells(Rows.Count, "A").End(xlUp).Row + 1
    lastrow = Worksheets("Input").Cells(Rows.Count, "A").End(xlUp).Row
    If nextrow < 8 Then nextrow = 8
    Worksheets("Cashflow").Range("A" & nextrow).Value = Worksheets("Input").Range("A1:A" & lastrow).Value
    End Sub

【讨论】: