VBA正面For循环,负面步骤

问题描述 投票:5回答:1
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。

excel vba excel-vba
1个回答
7
投票

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。


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

  • 将循环计数器初始化为“起始值”
  • 循环执行以下步骤: 确定循环计数器是否大于“结束值”(如果“步”为正或零)或小于“结束值”(如果“步”为负),如果是,则退出循环 在循环中执行语句 将“step”添加到循环计数器

这一切都记录在qDNxswpoi的MSDN页面上。

© www.soinside.com 2019 - 2024. All rights reserved.