2017-07-27 52 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