如何创build一个macros将数据从一个Excel工作表复制到另一个工作表中的下一行

我有点难住这个,想知道有人可以帮忙吗? 我在Excel中创build了一个macros,将一个工作表中的数据复制到另一个工作表中。 它工作正常,但显然,每次我运行macros时,它只是完成顶部行(正如我粘贴到logging)。 我真的希望它的工作,以便我每次运行macros时,它将数据复制到一个新的行。

如果有帮助,我可以粘贴一个链接到文档。 我确定这只是将一些VBA代码粘贴到macros中的一个例子。 目前,代码如下所示:

Sub Macro1() ' ' Macro1 Macro ' ' Sheets("Quotation System").Select Range("K9").Select Selection.Copy Sheets("Confirmed Bookings").Select Range("A2").Select ActiveSheet.Paste Range("B2").Select Sheets("Quotation System").Select Range("K11").Select Application.CutCopyMode = False Selection.Copy Sheets("Confirmed Bookings").Select ActiveSheet.Paste Sheets("Quotation System").Select Range("K13").Select Application.CutCopyMode = False Selection.Copy Sheets("Confirmed Bookings").Select Range("C2").Select ActiveSheet.Paste Sheets("Quotation System").Select Range("K15").Select Application.CutCopyMode = False Selection.Copy Sheets("Confirmed Bookings").Select Range("D2").Select ActiveSheet.Paste Columns("D:D").EntireColumn.AutoFit Columns("D:D").EntireColumn.AutoFit Columns("D:D").ColumnWidth = 10.86 Sheets("Quotation System").Select Range("K17").Select Application.CutCopyMode = False Selection.Copy Sheets("Confirmed Bookings").Select Range("E2").Select ActiveSheet.Paste Range("F2").Select Sheets("Quotation System").Select Range("K19").Select Application.CutCopyMode = False Selection.Copy Sheets("Confirmed Bookings").Select ActiveSheet.Paste Columns("F:F").ColumnWidth = 8.57 Sheets("Quotation System").Select Range("K21").Select Application.CutCopyMode = False Selection.Copy Sheets("Confirmed Bookings").Select Range("G2").Select ActiveSheet.Paste Range("H2").Select Sheets("Quotation System").Select Range("K23").Select Application.CutCopyMode = False Selection.Copy Sheets("Confirmed Bookings").Select ActiveSheet.Paste Range("I2").Select Sheets("Quotation System").Select Range("K25").Select Application.CutCopyMode = False Selection.Copy Sheets("Confirmed Bookings").Select ActiveSheet.Paste Sheets("Quotation System").Select Range("K7").Select Application.CutCopyMode = False Selection.Copy Sheets("Confirmed Bookings").Select Range("J2").Select ActiveSheet.Paste Range("K2").Select Sheets("Quotation System").Select Range("G29").Select Application.CutCopyMode = False Selection.Copy Sheets("Confirmed Bookings").Select ActiveSheet.Paste Columns("K:K").EntireColumn.AutoFit Columns("K:K").ColumnWidth = 6 Columns("K:K").ColumnWidth = 7 Range("K2").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "='Quotation System'!R[27]C[-4]" Range("K3").Select Columns("J:J").EntireColumn.AutoFit Range("I19").Select Columns("A:A").ColumnWidth = 8.43 End Sub Sub Booking_confimred() End Sub 

非常感谢!

因为你有一个特定情况的macroslogging,我想告诉你一个基本的方法来改善这个macros,并把这些副本放在一个特定的位置:

你从这开始

 Public Sub Macro1() Application.CutCopyMode = False 

那么这就是macros编码器用来复制的内容:

 Sheets("Quotation System").Select Range("K9").Select Selection.Copy 

这是你可以用来代替的:

 Sheets("Quotation System").Range("K9").Copy 

这是macroslogging器用来粘贴的东西:

 Sheets("Confirmed Bookings").Select Range("A2").Select ActiveSheet.Paste 

这是你可以用来代替的:

 Sheets("Confirmed Bookings").Range("A2").Paste 

而为了把它粘贴到一个新的行,这将是

  With Sheets("Confirmed Bookings") .Cells(.UsedRange.Columns(1).Rows.Count + 1, 1).Paste End With 

然而,这不是解决这个问题的唯一方法,而且肯定不是最好的一个,但是它可以帮助你理解VBA。

如果你想要一个整洁的解决scheme,你可能想要searchSO,因为在这里有很多类似的问题/问题和好的解决scheme。