[英]For Loop Counter in VBA increments by one extra
我有一个简单的循环计数器,我希望它会向我发送消息1,2,3...10
。 相反,我得到1,3,5,7,9
,但我无法弄清楚这个额外的增量来自哪里。 裁员后我有点生疏了,如果这看起来很简单,请耐心等待。
这是我的代码:
Dim x As Integer
For x = 1 To 10
MsgBox x
x = x + 1
Next x
大多数编程语言中的for
循环通常会自动递增或迭代某些内容。 在大多数语言中,提供一种指定增量数量的方法也很常见。 这就是 VBA 中的情况—请参阅VBA For...Next 文档。 例如:
For i = 1 to 20 Step 2
'do something
next i
您的代码正在递增x
,而For
也在递增x
。 如果满足某些特殊条件,有时您希望在循环内增加计数器,但不是在每个循环上。
如果要手动递增,则应改用while
循环。
Next x
行,当在For
循环中引用 integer (x) 时,将 x 增加 1
如果您想增加一个以上,或者在负方向上增加,您可以在For
行的末尾使用step
,它为Next
部分提供方向。 例子:
For x = 10 to 0 step -1
msgbox x
next x
将导致 11 个连续的 msgbox 显示:
10
9
8
7
6
5
4
3
2
1
0
根据您想要控制 X 的方式,您有不同的选择:
选项1:
让 for 循环控制一切并使用“步骤”。 在这种情况下,x 将在每次迭代中增加 y。 你不应该在循环中改变 x 。
Dim y As Integer
y = 1
For x = 1 To 10 step y
MsgBox x
Next x
选项 2:
如果 X 依赖于循环中发生的某些事情,并且您不希望 for 循环改变 x,您可以将 step 设置为 0。
For x = 1 To 10 step 0
MsgBox x
If x Mod 2 = 0 Then
x = x + 3
Else
x = x - 1
End If
Next x
备选方案
在选项 2 中使用 for 循环而不改变 x 将是不好的做法。 这并没有错,因为代码运行良好,但 while 循环将是一个更好的解决方案。
Dim x As Integer
x = 1
Do While x < 10
MsgBox x
If x Mod 2 = 0 Then
x = x + 3
Else
x = x - 1
End If
Loop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.