我有点难过,想知道是否有人可以帮忙吗?我在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
非常感谢!
答案 0 :(得分:3)
因为您记录了特定于特定情况的宏,所以我想向您展示一种改进此宏并将这些副本放置到特定位置的基本方法:
你从这个
开始Public Sub Macro1()
Application.CutCopyMode = False
然后,这就是宏重写器用来复制的内容:
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上搜索,因为这里有许多类似的问题/问题和良好的解决方案。