首页 > 解决方案 > For循环从1到递增值

问题描述

我试图运行“for循环”某些时间,偶尔在循环下的范围内添加一个额外的行。假设该示例最初有 15 行,并且在循环期间,条件为真 2 次,所以它应该在总行数上加上 +2。但是,代码似乎没有为那些添加的行执行循环,并在传递 orc=15 的值后立即退出。

下面的代码:

sub loop_to_orc()
    dim i as integer, orc as integer
    dim operations as range
    set operations = range(cells(1, 1), cells(, 1).end(xldown))
    orc = operations.rows.count

    for i = 1 to orc
        if cells(i,1)>0 then
            rows(i+1).insert
        end if
        orc = operations.rows.count
    next i
end sub

我哪里错了?有什么方法可以为添加的行实际运行循环吗?

标签: vbaexcelfor-loop

解决方案


您可以引入一个额外的变量:

Dim rowsAdded As Long
rowsAdded = 1

然后像这样使用它:

for i = 1 to orc
    if cells(i,1)>0 then
        rows(i+rowsAdded).insert
        i = i - 1
        rowsAdded = rowsAdded + 1
    end if
next i

这样,插入行时不会增加,而是在循环中选择,所以我们必须添加.iirowsAdded


推荐阅读