Excel 对于VBA中的循环计数器,额外增加一个

Excel 对于VBA中的循环计数器,额外增加一个,excel,vba,Excel,Vba,我有一个简单的循环计数器,我希望味精我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中就是这种情况,请参见。例如: 对于i=1到20,

我有一个简单的循环计数器,我希望味精我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中就是这种情况,请参见。例如:

对于i=1到20,步骤2 “做点什么 接下来我 您的代码递增x,For也递增x。有时,如果满足某些特殊条件,您希望在循环内增加计数器,但不是在每个循环上都要增加计数器

如果要手动递增,则应使用while循环。

在For循环中引用整数x时,下一行x将递增x 1

如果您希望增加一个以上的值,或者以负方向增加值,可以使用For行末尾的步骤,该步骤为下一部分提供方向。例如:

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循环控制一切并使用step。 在这种情况下,x将在每次迭代时增加y。你不应该在循环中改变x

Dim y As Integer
y = 1
For x = 1 To 10 step y
   MsgBox x
Next x
备选案文2:

如果X依赖于循环中发生的某些事情,并且您不希望for循环改变X,那么可以将步骤设置为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

对于增加x和x=x+1,您也可以增加或减少任何数量,将x变暗为双倍,对于x=1到10,步骤0.1和负>>>对于x=10到1,步骤1是默认值,因此无需每次都写入,下一步选民是否愿意解释不清楚的内容?我只是想问一下这是否正常,我想是的,我更喜欢一门语言除了我特别指示它做的事情之外什么都不做。但现在我知道了。谢谢while循环不会自动执行任何操作;循环中的某些内容需要更改,以便最终while条件为false或循环退出。@FreesoftwareServer如果需要For循环,可以尝试第0步-但此时,它几乎是while或Do循环,因此您应该使用其中一个。我也没有看到你抱怨MsgBox默认为xlOKOnly和标题的应用程序名。默认选项是shortcutUhm不,我想要一个for循环。我将始终编写步长增量,因为我希望我的代码清晰明了@我现在意识到这是语言的正常行为。您的评论没有提供新的或限制性的信息。@Chronocidal所以。。。我开始批量编码,现在我明白我是多么想当然地接受快捷方式/默认设置。。。简单地尝试在路径中扩展*通配符是一件令人头痛的事。。。Tho,我确实觉得这对学习很好。对不起。但我看不出我的答案有什么问题。似乎已经有足够多的人给了你关于如何修复for循环的答案。因此,我决定告诉你关于while循环的答案。使用for还是while loop是一个品味的问题,完全由您决定。我已经注意到了这些批评,我希望我的答案现在是令人满意的。