这里是所有初学者。我很难理解以下代码或任何操作相同变量的代码。
例如:
Private Sub CommandButton1_Click()
Dim i As Long
For i = 1 To 3
i = i + 1
Next i
MsgBox (i)
End Sub
为什么会返回5?
答案 0 :(得分:2)
您应注意,通常在循环内更改For
循环计数器是一个坏习惯。
这是怎么回事:
在循环运行时,如果Next i
的值在{之外,则i
将i
的值加1(即使您已经添加了一个...)。 {1}}边界然后循环终止。
所以:
迭代1:For
以1进入循环,由i
递增为2,然后再次变为3。
迭代2:Next i
以3进入循环,由i
增至4,然后又由5返回
5在1-3之外,因此Next i
最终为5
答案 1 :(得分:0)
说i = i + 1
与Next i
具有相同的效果。基本上,您在for
语句中将1加到i上,并在递增时再次添加。
For i = 1 to 3 'starts with i = 1
i = i + 1 'adds 1 to i, i = 2 in the first loop
Next i 'adds 1 to i, i = 3 at the end of the first loop. Thee second loop starts
i以3的值启动secons循环,当您将其添加1时
i = i + 1
,然后再次输入Next i
我希望这可以帮助您理解它,并且很抱歉,我的回答有点不整洁,我是通过手机答复的。
答案 2 :(得分:0)
这是使用For
循环重写的While
循环:
i = 1
While i >= 1 And i <= 3
i = i + 1
i = i + 1
End While
请注意,Next i
被直接转换为i = i + 1
-因此,对于循环的每次迭代,您现在都在有效地执行i = i + 2
。
由于i
在开始时是1
,因此它与循环条件匹配,因此我们将2
添加到i
。它仍然符合循环条件,因此我们再次添加另一个2
来执行循环。
这意味着i
是1 + 2 + 2
或5
。