我正在使用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
编辑:我明确要求进行比较以终止循环的原因是因为我不能假设一个明确定义的空间,我可以在每个单元格上进行直接循环。
答案 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方向的移动而不需要杂乱的列/行并且可以轻松读取。