我把原代码加上中间的输出:
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
j = 10
For i = 1 To j
i = i + 2
j = j - i
Print i & "," & j
Next i
Print i
Print j
End Sub
得到的结果:
3,7
6,1
9,-8
12,-20
13
-20
这就看得很明白了,
程序第一次运行了 for i=1 to j 时,已经把j编译成10(不是变量)了,以后的每次循环,都是把i与10作比较,而不是与变量j作比较。