通过改变VBA的范围来迭代

时间:2013-08-28 11:46:35

标签: vba iterator

我正在迭代VBA中的一个范围,目前处于for循环中。我有一个if语句,当它们符合某些条件时会从范围中删除值,但是当我这样做时,会跳过范围中的下一个值。

我知道我可以用Java中的数组和迭代器解决这个问题,VBA有这样的东西吗?

1 个答案:

答案 0 :(得分:1)

删除行时必须向后迭代,因此必须使用for循环而不是for each

您将i设置为范围中的最后一行,然后添加step -1以使循环减少i

不会正常工作的示例for each

dim cell as Range
for each cell in Range("A1:A100")
    if isEmpty(cell) then cell.delete shift:=xlUp
next 

替换For循环,如果行为空,将删除行

dim i as long, lastRow as Long, firstRow as Long
lastRow = 100: firstRow = 1
dim cell as Range
for i = lastRow to firstRow step -1
    Set cell = Range("A" & i)
    if isEmpty(cell) then cell.Delete shift:=xlUp
    Set cell = Nothing
next i