首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MS Excel For Each循环:插入行

MS Excel For Each循环:插入行
EN

Stack Overflow用户
提问于 2013-04-15 01:20:39
回答 3查看 2.5K关注 0票数 4

我有一个包含242行的工作表。我想在每个现有行的下面创建一个新行。相反,我的代码在第一行下面创建了242行。我花了整个下午在Google和Stack Overflow上,尝试了各种想法,但都得到了同样的问题。下面是我的代码:

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2013-04-15 02:25:00

也许这会有帮助

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-04-15 04:31:51

最简单的方法是递增而不是递减,就像这样

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2013-04-15 02:34:51

如果你在for each循环debug.print row.address中调试,你会注意到当有一个insert时,你的rng会一直扩展。相反,您可以使用如下代码中的for循环。

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16001937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档