For i = 0 To 10
看你如何理解这条命令,一般认为变量 i 会在每次循环自动加1,循环体运行次数由 i 掌控。
其实不然,这条命令的循环次数由 0 To 10 掌控,虽然表面上看不到变量名,但你可以把它看做一个隐含变量,每次循环到这里,隐含变量自动按step步长值+1,隐含变量就把+1后的新值赋值给变量 i ,即然是赋值,那么不管 i 当前值是多少,都会被替换为新值。
那难道说题主图中的 i = i -1 就不起作用了吗,其实也起作用,如果在循环体内改变 i 值,依然是有效的:
for i = 1 to 10
TracePrint(i)
i = i - 1
TracePrint(i)
next
只要分两次输出,就可以看到变量 i 在循环体内部是正常运算的,只是本次循环完毕会被隐藏变量重新赋值。