EXCEL VBA:从工作表A复制行到工作表B的末尾

我试图从表A复制行到表B的结尾已经有一个数据列表中。 我用下面的代码。 每次我尝试运行这个特定的代码,整个程序崩溃的问题是。

Sub test() Dim i As Integer Dim j As Integer i = ActiveSheet.Range("A1").End(xlDown).Row - 1 For j = 1 To 50 On Error GoTo Err_Execute Sheets("A").Rows(j).Copy Sheets("B").Rows(i).Insert Shift:=xlDown i = i + 1 Next j Err_Execute: If Err.Number = 0 Then MsgBox "All have been copied!" Else _ MsgBox Err.Description End Sub 

下面的作品。 我已经为表A添加了拉斯特罗,以便稍微更具dynamic性。 我也错误地移动了,你不需要在开始时设置每个循环

 Sub test() Dim i As Integer Dim j As Integer Dim Last_row as Integer i = Sheets("B").Range("A1").End(xlDown).Row + 1 last_row = Sheets("A").Range("A1").End(xlDown).Row On Error GoTo Err_Execute For j = 1 To last_row Sheets("A").Rows(j).EntireRow.Copy Sheets("B").Rows(i).PasteSpecial i = i + 1 Next j Err_Execute: If Err.Number = 0 Then MsgBox "All have been copied!" Else _ MsgBox Err.Description End Sub 

其实你为什么在循环? 下面只是select所有的行,并在一个行动中复制它们。 应该快得多

 Sub test() On Error GoTo Err_Execute With Sheets("A") .Rows("1:" & .Range("A1").End(xlDown).Row).EntireRow.Copy End With With Sheets("B") .Rows(.Range("A1").End(xlDown).Row + 1).PasteSpecial End With Err_Execute: If Err.Number = 0 Then MsgBox "All have been copied!" Else _ MsgBox Err.Description End Sub