Sub Test1()
Dim a As Integer
For a = 1 To 3 Step 1 'STEP POSITIVE ONE
Next
Debug.Print a
End Sub
收益率为4,如预期。
Sub Test2()
Dim a As Integer
For a = 1 To 3 Step -1 'STEP NEGATIVE ONE
Next
Debug.Print a
End Sub
为什么踩到“外部”循环会导致1?
为什么VBA步入测试1的界限,但是当它超出Test2的范围时停止st脚?
编辑:除了上述,运行For a = 1 To 1 Step 1
结果为2,For a = 1 To 1 Step -1
结果为0。
For a = 1 To 2 Step 1
结果为3,但For a = 1 To 2 Step -1
结果为1。
在Test1
(即For a = 1 To 3 Step 1
)中,在第3次循环之后,a
增加到4.当它大于3时,它停止并显示4。
在Test2
(即For a = 1 To 3 Step -1
)中,a
最初设置为1.因为它已经小于3,它会立即停止并显示1。
在For a = 1 To 1 Step 1
中,a
设置为1,不大于1,因此循环继续,然后a
增加到2.当2大于1时,它停止并显示2。
在For a = 1 To 1 Step -1
中,a
设置为1,不小于1,因此循环继续,然后a
递减为0.当0小于1时,它停止并显示0。
在For a = 1 To 2 Step 1
中,a
设置为1,不大于2,因此循环继续,然后a
增加到2,然后a
增加到3.当3大于1时,它停止并显示3。
在For a = 1 To 2 Step -1
中,a
设置为1,小于2,因此循环停止并显示1。
这些循环中的实际过程是:
这一切都记录在qDNxswpoi的MSDN页面上。