对于从1到递增值的循环

时间:2018-06-03 18:48:04

标签: vba excel-vba for-loop excel

我试图在某些时间运行“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

我哪里错了?是否有任何方法可以为添加的行实际运行循环?

1 个答案:

答案 0 :(得分:0)

你可以输入一个额外的变量:

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

这样,当插入行时,不会递增i,但您在循环中选择i,因此我们必须添加rowsAdded