我正在迭代VBA中的一个范围,目前处于for循环中。我有一个if语句,当它们符合某些条件时会从范围中删除值,但是当我这样做时,会跳过范围中的下一个值。
我知道我可以用Java中的数组和迭代器解决这个问题,VBA有这样的东西吗?
答案 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