是否可以在变量实际更改的for循环中设置变量限制?像这样的东西
Set sht = Worksheets(2)
For i = 1 To sht.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
[instructions that may or may not insert new rows]
Next i
就我而言,在for循环中,数据范围可能只会增长,但我仍需要完成所有这些操作.
换句话说,每次迭代都会更新上限吗?
最佳答案 For Next循环
VBA帮助
For counter = start To end
Next [counter]
一项小型研究
以下是我看到For Next循环工作的方式.有些陈述至少不正确,可能并非完全正确.
Sub ForNext()
Dim i as Long
For i = 1 to 3
Msgbox i
Next ' or Next i
Msgbox "You might have thought that 'i' is '3' now, but it isn't. It is '" & i & "'".
End Sub
以下两件事情无法改变:
start = 1
end = 3
第1轮:
start(1)被写入counter(i = 1).
Msgbox显示计数器(i = 1).
接下来增加计数器(i = 2).
计数器(i = 2)与结束(3)进行核对.
如果counter(i = 2)< = end(3)(TRUE),则进入下一轮,否则退出(FALSE).
第2轮:
计数器是2(i = 2).
Msgbox显示计数器(i = 2).
接下来增加计数器(i = 3).
计数器(i = 3)与结束(3)进行核对.
如果counter(i = 3)< = end(3)(TRUE),则进入下一轮,否则退出(FALSE).
第3轮:
计数器是3(i = 3).
Msgbox显示计数器(i = 3).
接下来增加计数器(i = 4).
计数器(i = 4)与结束(3)进行核对.
如果counter(i = 4)< = end(3)(FALSE),则进入下一轮,否则退出(TRUE).
出口
外部Msgbox显示计数器(i = 4).
两件重要的事情:
循环将结束 – 开始1次(轮次).
计数器最终将结束1.
这并非总是如此,例如如果你把i = 5000放入循环中,计数器(i)将最终等于5001.
如果你将i = i – 1放入循环中,你将得到一个无限循环:计数器将始终为1.
如果将i = i – 2放入循环中,循环将一直运行,直到超过变量的值限制并以溢出错误结束.
总而言之,一旦循环开始(开始已被写入计数器),它已经“忘记”开始,所以计数器可能小于开始.
但是,在退出循环之前,结束将是“相关的”,一旦计数器大于结束(或使用“退出”),就会发生这种情况.