我在工作表1上录制了一个宏,该宏链接到按钮。我需要完成的任务:
按下按钮时,将选择某些单元格并将其复制到另一张纸的“摘要”页面上。
Sheet1的下拉菜单显示某些信息。因此,从下拉列表中选择数据后,用户将按下按钮并将该数据发布到摘要表中。
该宏可以正常工作(请注意,我是VBA菜鸟),但是我需要添加功能的帮助,该功能需要在每次按下按钮后将数据复制到下一行-换句话说,如果数据已经在第1行中,它必须将数据放在第2行中,依此类推。
我拥有的VB代码如下:
Sub Test()
'
' Test Macro
'
'
Range("C32:N32").Select
Selection.Copy
Sheets("Summary").Select
Range("D3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks
_
:=False, Transpose:=False
Sheets("Comm Payable").Select
Range("C3:D3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Summary").Select
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks
_
:=False, Transpose:=False
Sheets("Comm Payable").Select
Range("N1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Summary").Select
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks
_
:=False, Transpose:=False
Range("B4").Select
Sheets("Comm Payable").Select
Range("O1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
Range("O1").Select
End Sub
请有人协助上述补充吗?
非常感谢!
答案 0 :(得分:2)
阅读PEH发布的链接非常必要,因为这样可以大大缩短和加快代码的速度。我想这就是您想要的。
Sub Test()
Dim r As Long
r = WorksheetFunction.Max(Sheets("Summary").Range("D" & Rows.Count).End(xlUp).Row + 1, 3)
Sheets("Comm Payable").Range("C32:N32").Copy
Sheets("Summary").Range("D" & r).PasteSpecial Paste:=xlPasteValues
Sheets("Comm Payable").Range("C3:D3").Copy
Sheets("Summary").Range("B" & r).PasteSpecial Paste:=xlPasteValues
Sheets("Comm Payable").Range("N1").Copy
Sheets("Summary").Range("C" & r).PasteSpecial Paste:=xlPasteValues
Sheets("Comm Payable").Range("O1").ClearContents
End Sub
顺便说一句,直接传输值比复制和粘贴更有效,这是一个示例。
With Sheets("Comm Payable").Range("C32:N32")
Sheets("Summary").Range("D" & r).Resize(.Rows.Count, .Columns.Count).Value = Value
End With