繁体   English   中英

VBA正面For循环,负面步骤

[英]VBA Positive For loop, negative step

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步入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。

For a = 1 To 1 Step 1a设置为1,其不大于1,因此循环继续,然后a递增到2.当2大于1时,它停止并显示2。

For a = 1 To 1 Step -1a设置为1,不小于1,因此循环继续,然后a递减到0.当0小于1时,它停止并显示0。

For a = 1 To 2 Step 1a设置为1,不大于2,因此循环继续,然后a递增到2,然后a递增到3.当3大于1时,它停止并显示3。

For a = 1 To 2 Step -1a设置为1,小于2,因此循环停止并显示1。


这些循环中的实际过程是:

  • 将循环计数器初始化为“起始值”

  • 循环执行以下步骤:

    • 确定循环计数器是否大于“结束值”(如果“步”为正或零)或小于“结束值”(如果“步”为负),如果是,则退出循环

    • 在循环中执行语句

    • 将“step”添加到循环计数器

这些都记录在MSDN页面上的“For ... Next Statement”中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM