首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环的端点(?)循环期间的更改

问循环的端点(?)循环期间的更改
EN

Code Review用户
提问于 2019-03-18 17:08:06
回答 1查看 69关注 0票数 1

我有一个循环,用于在特定情况下插入行。循环通过大约2000行并插入大约500行。

由于插入的行,它没有循环我想要的全部范围。我用第一个循环来计算插入的行数,然后循环到LastRow +计数器,从而解决了这个问题。

我觉得一定有更好的方法做这件事。

代码语言:javascript
复制
Sub AddRows()
Dim i As Integer: i = 8
Dim LastRow As Integer: LastRow = Cells(8, 2).End(xlDown).Row
Dim counter As Integer: counter = 0

For i = 8 To LastRow
    If Cells(i, 1) <> "" Then
        counter = counter + 1
    End If
Next i

NewLastRowAfterAddingRows = LastRow + counter  

For i = 8 To NewLastRowAfterAddingRows 
    If Cells(i, 1) <> "" Then
        Range(i + 1 & ":" & i + 1).Insert CopyOrigin:=xlFormatFromRightOrBelow
        i = i + 1
    End If
Next i


End Sub
EN

回答 1

Code Review用户

发布于 2019-03-18 18:53:12

在for/next循环中更改迭代器变量通常不是一个好主意。虽然您的代码有效,但这并不是一个好的实践。另外,初始化I到8也是多余的,因为循环也是从8开始的。以下是我的处理方法:

代码语言:javascript
复制
Sub AddRows()

    Dim i As Integer
    Dim LastRow As Integer
    Dim counter As Integer

    LastRow = Cells(8, 2).End(xlDown).Row
    counter = 8

    For i = counter To LastRow
        If Cells(counter, 1) <> "" Then
            counter = counter + 1
            Range(counter & ":" & counter).Insert CopyOrigin:=xlFormatFromRightOrBelow
        End If
        counter = counter + 1
    Next i

End Sub
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/215693

复制
相关文章

相似问题

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