复制单元格区域并粘贴到第一个空行更有效的代码? 高强

我有一个macros从“新search”中select单元格,并将该范围粘贴到“过去的search”中的第一个打开的单元格中。我在考虑我的代码是非常无效的。 有没有人有任何想法,我可以改善这一点?

Sub Macro5() Range("A3:J3").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("Past Searches").Select Range("A1").End(xlDown).Offset(1, 0).Select ActiveSheet.Paste Worksheets("New Searches").Activate Application.CutCopyMode = False End Sub 

首先,您不必使用。select或。激活您将操作的单元格/工作表,只需直接引用它们即可。 这可以真的减慢你的代码。

.Copy方法可以带一个Destination参数,所以你不必在其他地方使用.Paste。

另外,.End属性不是很可靠。 改用UsedRange最好。

你可以做很多只有一行。

 Worksheets("New Search").Range("A3:J3").Copy Destination:=Worksheets("Past Searches").UsedRange.Columns(1).Offset(1, 0) 

法比奥感谢您指引我正确的方向,我不能把这个混乱,以简明的代码。

 numofrows = ActiveSheet.UsedRange.Rows.Count` Worksheets("New Searches").Range("A3", "J" + CStr(numofrows)).Copy Destination:=Worksheets("Past Searches").Range("A1").End(xlDown).Offset(1, 0) 

这最终做了我需要做的事情。

你也可以这样做,所以你不需要numofrows?

 Worksheets("New Searches").Range(Range("A3:J3"), Range("A3:J3").End(xlDown)).Copy Destination:= _ Worksheets("Past Searches").Range("A1").End(xlDown)