2017-01-10 68 views
0

HI我使用此代碼將表「t1」中的固定範圍複製到表「t2」中的第一個空行。我想選擇在第一列有價值的所有行。例。在這個例子中我想開始於約翰的結束所有的值在44(行2,3,4和5)如何將所有提交的行從一個表複製到另一個表

1 Name address zip 
2 john aaa 11 
3 jane bbb 22 
4 carl ccc 33 
5 jeff   44 

這裏是我使用的代碼複製。

Sub Botão1_Clique() 

Application.ScreenUpdating = False 
Dim copySheet As Worksheet 
Dim pasteSheet As Worksheet 

Set copySheet = Worksheets("t1") 
Set pasteSheet = Worksheets("t2") 
copySheet.Range("A3:E3").Copy 


pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 
Application.CutCopyMode = False 
Application.ScreenUpdating = True 



End Sub 
+0

要獲得非空白範圍,調整到所需的列,使用'SpecialCells(xlCellTypeConstants)',然後調整大小以覆蓋其他列。 – cyboashu

+0

t2上的第一個空行或t2的最後一行? – Moacir

+0

t2上的最後一行,T2將存儲我在T1中白天輸入的所有值,每天我在t1上更改這些值,並且在一天結束時,我想將所有內容都複製到t2列表中。 – Aman

回答

2

嘗試下面使用AutoFilter方法,允許的情況下,複製的所有行的工作表(「T1」)有與數據行的代碼,但在列A空

Option Explicit 

Sub Botão1_Clique() 

Application.ScreenUpdating = False 

Dim copySheet As Worksheet 
Dim pasteSheet As Worksheet 
Dim Rng As Range 

Set copySheet = Worksheets("t1") 
Set pasteSheet = Worksheets("t2") 

copySheet.UsedRange.AutoFilter 
copySheet.UsedRange.AutoFilter Field:=1, Criteria1:="<>" ' <-- sut autofilter to exclude blanks on column A 

Set Rng = Intersect(copySheet.UsedRange.Offset(1), copySheet.UsedRange.SpecialCells(xlCellTypeVisible)) ' <-- set range to only visible rows without the header row 

Rng.Copy 
pasteSheet.Range("A" & pasteSheet.Cells(pasteSheet.Rows.Count, "A").End(xlUp).Row + 1).PasteSpecial xlPasteValues ' <-- paste values to first empty row at "t2" worksheet 

Application.CutCopyMode = False 
Application.ScreenUpdating = True 

End Sub 
+0

謝謝,它工作!我讚賞這些評論有助於理解發生了什麼! – Aman

+0

只有一個問題可以不選擇第一行? – Aman

+0

是的,但我需要修改一些代碼行,使它不那麼幹淨,對你來說很重要嗎? –

相關問題