Excel 复制单元格范围并粘贴到第一个空行更有效的代码?擅长
我有一个宏,它从“新搜索”中选择一个单元格,并将范围粘贴到“过去搜索”中的第一个打开的单元格。我认为我的代码非常无效。有人对我如何改进这一点有什么想法吗Excel 复制单元格范围并粘贴到第一个空行更有效的代码?擅长,excel,vba,Excel,Vba,我有一个宏,它从“新搜索”中选择一个单元格,并将范围粘贴到“过去搜索”中的第一个打开的单元格。我认为我的代码非常无效。有人对我如何改进这一点有什么想法吗 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 A
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或.Activate,只需直接引用它们即可。这确实会降低代码的速度 .Copy方法可以接受目标参数,因此您不必使用.Paste 另外,.End属性也不是很可靠。最好改用UsedRange 你只需要一行就可以做到
Worksheets("New Search").Range("A3:J3").Copy Destination:=Worksheets("Past Searches").UsedRange.Columns(1).Offset(1, 0)
首先,您不必在要操作的单元格/工作表上使用.Select或.Activate,只需直接引用它们即可。这确实会降低代码的速度 .Copy方法可以接受目标参数,因此您不必使用.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 = ActiveSheet.UsedRange.Rows.Count`
Worksheets("New Searches").Range("A3", "J" + CStr(numofrows)).Copy Destination:=Worksheets("Past Searches").Range("A1").End(xlDown).Offset(1, 0)
这就完成了我需要做的事情。你也可以这样做,这样你就不需要NumoFrow了
Worksheets("New Searches").Range(Range("A3:J3"), Range("A3:J3").End(xlDown)).Copy Destination:= _
Worksheets("Past Searches").Range("A1").End(xlDown)
你也可以这样做,这样你就不需要NumoFlows了
Worksheets("New Searches").Range(Range("A3:J3"), Range("A3:J3").End(xlDown)).Copy Destination:= _
Worksheets("Past Searches").Range("A1").End(xlDown)
如果去掉
,代码会更干净、更高效。选择和。激活。阅读此答案末尾的注释,了解如何操作:要添加@HeadofCatering所说的内容,请查看答案,其中有避免选择@seanscheir的方法,复制粘贴宏。。。答案还链接到Sid回答的问题。(好主意!)Chris Nielsen的答案(公认的答案)也有很多有用的信息。如果你去掉,你的代码会更干净、更高效。选择和。激活。阅读此答案末尾的注释,了解如何操作:要添加@HeadofCatering所说的内容,请查看答案,其中有避免选择@seanscheir的方法,复制粘贴宏。。。答案还链接到Sid回答的问题。(好主意!)Chris Nielsen的答案(公认的答案)也有很多有用的信息。感谢您的提示,但您的代码似乎只选择了A3:J3
,而不是第一行下面的行?感谢您的提示,但是您的代码似乎只选择了A3:J3
,而不是第一行下面的行?没问题,很高兴我能帮上忙:)没问题,很高兴我能帮上忙:)