有没有办法告诉一个细胞何时低于另一个细胞?

时间:2015-01-05 22:18:54

标签: excel vba excel-vba

我正在使用excel vba,并且我试图进行循环,直到我处理的范围超出其他预定范围。

例如,我将一个范围设置为range("A10000"),并且我想在a列上循环,直到通过该点为止。

我喜欢的Psudo代码如下。

dim myRange as range
dim maxRange as range

do while myRange < maxRange
  ' do something
  ' range.address = range.address next one '(range("a450") becomes range("a451"))
end while

编辑:我明确要求进行比较以终止循环的原因是因为我不能假设一个明确定义的空间,我可以在每个单元格上进行直接循环。

2 个答案:

答案 0 :(得分:2)

这是你想要做的吗?

Public Sub TEST()


    Dim myRange As Range
    Dim maxRange As Range
    Dim i as Integer
    Set myRange = Sheets(1).Range("A2")
    Set maxRange = Sheets(1).Range("A5")

    Do While myRange.Row < maxRange.Row
      ' do something
      ' range.address = range.address next one '(range("a450") becomes range("a451"))
      i = myRange.Row + 1
      Set myRange = Sheets(1).Range("A" & i)
    Loop



End Sub

答案 1 :(得分:2)

尽管爱德华的回答似乎是解决这一挑战的一种非常合理的方法(Range.row应该让你到达你的目的地),当我需要对Range进行操作时对象,并为For Each Cell in Range构造提供了一个非常明确的空间。

这是一个很小的例子:

Dim rngTarget As Range, rngCell As Range

Set rngTarget = Sheets(1).Range("A2:A10000")

For Each rngCell In rngTarget
    'do cool stuff to rngCell
Next rngCell

你有它!我特别喜欢这种方法,因为它简洁,处理x和y方向的移动而不需要杂乱的列/行并且可以轻松读取。