2017-07-27 72 views
-1

我想将大量的行复制到VBA存档中。 (VBA noob在这里)。我有两张纸,一张叫Active,还有档案。在活动中,我有一个名为Job Number的列,这是其他数据基于的列。我需要复制作业编号不是空白的所有行,并将每行单独复制到存档空白行可用的归档表单中。然后清除作业号码单元格。Excel VBA行复制到档案

底部是我到目前为止。基本上我需要采取列e中有非空单元格的所有行(我试图对行进行计数,直到最后一个非空记录 - > NumRows)也在Archive(lr2)中找到最后一个非空变量的位置,然后我尝试了一个for循环来复制,但它没有做任何事情。任何帮助都是极好的。

Sub Archiver() 
Dim lr As Long, lr2 As Long, r As Long, NumRows As Integer 
lr2 = Sheets("Archive").Cells(Rows.Count, "E").End(xlUp).Row 
NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count 
For r = 5 To NumRows 
    Rows(r).Copy Destination:=Sheets("Archive").Range("A" & lr2 + 1) 
    lr2 = Sheets("Archive").Cells(Rows.Count, "E").End(xlUp).Row 
Next r 
End Sub 
+2

请参阅[如何提问](http://stackoverflow.com/help/how-to-ask)。然后编辑你的问题来创建一个[明确的,可定义的编程问题]([如何问]](http://stackoverflow.com/help/mcve) –

+0

对不起,我应该说得更清楚,我没有VBA经验。如果你知道某处我可以学习做这样的事情(不仅仅是针对一般学习的VBA),这也会有帮助。 –

+2

请参阅https://stackoverflow.com/documentation/excel-vba/777/getting-started-with -excel-vba#t = 201707271347090583505 – sourceCode

回答

0

试试这个:

Sub Archiver() 
Dim lr2 As Long 
Dim y As Worksheet, z As Worksheet 
Dim copyRng As Range 


Set y = Sheets("Active") 
Set z = Sheets("Archive") 

lr2 = y.Cells(rows.Count, "E").End(xlUp).Row 

'Here you select the range of your sheet you want to copy, for me is A:E 
Set copyRng = y.Range("A2:E" & lr2) 

z.Range("A2:E" & copyRng.rows.Count + 1).Insert Shift:=xlDown 
copyRng.Copy z.Range("A2") 

y.Range("A2:E" & lr2).ClearContents 

End Sub 
+0

工作感谢很多 –

+0

@MaharshiPatel欢迎您,很高兴它帮助:) – paulinhax