lee*_*vid 5 excel vba excel-vba
Sub Test1()
Dim a As Integer
For a = 1 To 3 Step 1 'STEP POSITIVE ONE
Next
Debug.Print a
End Sub
Run Code Online (Sandbox Code Playgroud)
收益率为4,如预期.
Sub Test2()
Dim a As Integer
For a = 1 To 3 Step -1 'STEP NEGATIVE ONE
Next
Debug.Print a
End Sub
Run Code Online (Sandbox Code Playgroud)
为什么踩到"外部"循环会导致1?
为什么VBA步入Test1的界限,但是当它对于Test2的超出部分时停止踩踏?
编辑:除了上述,运行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.
In For a = 1 To 1 Step 1,a设置为1,不大于1,因此循环继续,然后a递增到2.当2大于1时,它停止并显示2.
In For a = 1 To 1 Step -1,a设置为1,不小于1,因此循环继续,然后a递减为0.当0小于1时,它停止并显示0.
In For a = 1 To 2 Step 1,a设置为1,不大于2,因此循环继续,然后a递增到2,然后a递增到3.当3大于1时,它停止并显示3.
In For a = 1 To 2 Step -1,a设置为1,小于2,因此循环停止并显示1.
这些循环中的实际过程是:
将循环计数器初始化为"起始值"
循环执行以下步骤:
确定循环计数器是否大于"结束值"(如果"步"为正或零)或小于"结束值"(如果"步"为负),如果是,则退出循环
在循环中执行语句
将"step"添加到循环计数器
这些都记录在MSDN页面上的"For ... Next Statement"中.