【问题标题】:How to create a macro to copy data from one excel worksheet to the next line in another worksheet如何创建宏以将数据从一个excel工作表复制到另一个工作表的下一行
【发布时间】:2012-11-19 14:21:48
【问题描述】:

我对此有点困惑,想知道是否有人可以帮忙?我在 excel 中创建了一个宏来将一些数据从一个工作表复制到另一个工作表。它工作正常,但显然每次我运行宏时,它都会完成第一行(正如我在录制时粘贴的那样)。我实际上希望它能够工作,以便每次运行宏时,它都会将数据复制到新行。

如果有帮助,我可以粘贴指向该文档的链接。我确定这只是将一些 VBA 代码粘贴到宏中的情况。目前,代码如下所示:

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

非常感谢!

【问题讨论】:

    标签: excel copy vba


    【解决方案1】:

    因为您记录了一个非常特定于情况的宏,所以我想向您展示一种改进此宏并将这些副本放置到特定位置的基本方法:

    你从这个开始

    Public Sub Macro1()
    
      Application.CutCopyMode = False
    

    那么,这就是macro-recoder 用来复制的内容:

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

    这是您可以改用的:

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

    这是宏记录器用来粘贴的:

    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。

    如果您想要一个更简洁的解决方案,您可能需要在 SO 上四处搜索,因为这里有许多类似的问题/问题和很好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 2012-10-01
      相关资源
      最近更新 更多