有没有办法判断一个单元格何时在另一个单元格下方?

Is there a way to tell when one cell is below another?

我正在使用 excel vba,我正在尝试循环直到我处理的范围超出其他一些预定义范围。

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

我想要的伪代码如下。

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

编辑:我明确寻找比较以终止循环的原因是因为我不能假设一个定义明确的 space 我可以对每个单元格进行直接循环。

这是你想要做的吗?

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

虽然爱德华的回答似乎是解决这个挑战的一个非常合理的方法(Range.row 应该让你到达你要去的地方),但当我需要对 Range 对象进行操作并且有一个定义非常明确 space 我伸手去拿 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 方向的移动而无需处理 columns/rows 并且易于阅读。