2017-07-27 207 views

回答

0

你可以试试这样的事情...

Sub CopyRows() 
Dim sws As Worksheet, dws As Worksheet 
Dim i As Long, lr As Long 
Application.ScreenUpdating = False 
Set sws = Sheets("Sheet1") 
Set dws = Sheets("Sheet2") 
lr = sws.UsedRange.Rows.Count 
dws.Cells.Clear 
sws.UsedRange.Copy dws.Range("A1") 
For i = lr To 1 Step -1 
    dws.Rows(i).Insert 
Next i 
Application.ScreenUpdating = True 
End Sub 

编辑答案:

你可以试试这个方法,这将是更快足以从Sheet1的数据复制到Sheet2中。唯一的缺点是它将只复制Sheet1上的任何公式的值。

Sub CopyRows() 
Dim sws As Worksheet, dws As Worksheet 
Dim i As Long, ii As Long, j As Long 
Dim x, y() 
Application.ScreenUpdating = False 
Set sws = Sheets("Sheet1") 
Set dws = Sheets("Sheet2") 
dws.Cells.Clear 
x = sws.Range("A1").CurrentRegion.Value 
ReDim y(1 To UBound(x, 1) * 2, 1 To UBound(x, 2)) 
For i = 1 To UBound(x, 1) 
    j = j + 2 
    For ii = 1 To UBound(x, 2) 
     y(j, ii) = x(i, ii) 
    Next ii 
Next i 
dws.Range("A1").Resize(UBound(y, 1), UBound(y, 2)).Value = y 
End Sub 
+0

我很抱歉,但这并没有奏效。 – Sona123

+0

什么没有工作?你是否能够理解代码,以便在需要时调整它。代码非常简单。它将所有数据从Sheet1复制到Sheet2,然后在Sheet2之间插入一行。或者在Sheet2上,你已经有了一些你不想用Sheet1数据替换的偶数行数据? – sktneer

+0

你好,它确实听起来正是我所需要的。但是,当我运行这段代码似乎进入了一个无限循环 - 没有给出错误没有得到工作表更新或者Excel工作表变成“没有响应”。是否有任何原因 – Sona123

相关问题