1

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

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

4

1 回答 1

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
于 2013-08-28T12:58:34.893 回答