2013-04-14 32 views
4

我有一個包含242行的工作表。我想在每個現有的下方創建一個新的行。相反,我的代碼在第1行下創建了242行。我花了整整一個下午的時間在Google和Stack Overflow上,嘗試了各種想法,但遇到了同樣的問題。這裏是我的代碼:每個循環的MS Excel:插入行

Function rws() As Integer 

rws = (Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).row) 

End Function 

Sub InsRws() 

Dim rng As Range 
Dim row As Range 

Set rng = Range("A1:A" & rws - 1) 

For Each row In rng.Rows 
    Rows.Select 
    ActiveCell.Offset(1).EntireRow.Insert 
Next row 

End Sub 
+0

請選擇最適合你的問題的答案 –

+0

是的職位之一,如果提出一個答案解決您的問題,那麼你應該「接受」它爲未來讀者的利益(並給予花時間幫助你的人一些聲望點)。 –

回答

2

也許這將幫助

Function rws() As Integer 

rws = (Cells(rows.Count, "A").End(xlUp).Offset(1, 0).row) 

End Function 

Sub InsRws() 
    Dim rowCount As Integer 
    Dim i As Integer 
    rowCount = rws 
    For i = 1 To rowCount 
     Range("A" + CStr(2 * i - 1)).Select 
     ActiveCell.Offset(1).EntireRow.Insert 
    Next 
End Sub 
1

如果調試在每個循環debug.print row.address你會發現當有插入您的RNG不斷擴大。相反,你可以像下面的代碼一樣使用for循環。

Sub InsRws() 

    Dim lastRow As Long 
    lastRow = Sheets("Sheet1").Range("A65000").End(xlUp).Row 

    For i = 1 To lastRow 
     Range("A" & i * 2).EntireRow.Insert 
    Next 

End Sub 
2

最簡單方法是計數,而倒了下來,像這樣

Sub InsertRows() 
    Dim rw As Long 

    With ActiveSheet 
     For rw = .Cells(.Rows.Count, 1).End(xlUp).Row To 2 Step -1 
      .Rows(rw).Insert 
     Next 
    End With 
End Sub