MS Excel中的For Each循环:插入行

4

我有一个包含242行的工作表。我想在每一行下面创建一行新的。然而,我的代码却在第1行下面创建了242行。我已经在Google和Stack Overflow上花费了整个下午,并尝试了各种方法,但问题仍然存在。这是我的代码:

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

请选择最符合您问题的帖子作为答案。 - Patrick D'Souza
如果您的问题已经被提出的答案解决了,那么为了日后的读者受益(并且为花时间帮助您的人赚取一些声望点数),您应该“接受”它。 - Gord Thompson
3个回答

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

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

1

如果您在for each循环中调试 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接