【发布时间】:2016-10-20 00:18:06
【问题描述】:
以下代码表现出以下奇怪的行为: 1.)如果我将步骤设置为零,它会从一个单元格移动到另一个单元格,消息框会从 1 到 8 计数(对于 i = 1 到 8 步骤 0)。 2.)如果我将步骤设置为 1,它会给出序列 1、3、5、7(对于 i = 1 到 8 步骤 1)。据我了解,步骤 1 应该为消息框返回产生 1、2、3、4、5、6、7、8。
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To 8 Step 1
MsgBox i
ActiveCell.Offset(1, 0).Range("A1").Select
i = i + 1
Next i
End Sub
这样的数学当然是有道理的,但是根据标准 excel 循环的机制似乎很奇怪,因为这会产生与(没有指定步长增量)相同的结果:
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To 8
MsgBox i
ActiveCell.Offset(1, 0).Range("A1").Select
i = i + 1
Next i
End Sub
也就是说,MsgBox 序列是 1、3、5、7。关键是我知道将“步骤 0”附加到 for 语句会给出单位增量,但这感觉像是一种解决方法,可以省略步增量全部一起?我不得不怀疑我的 2013 excel pro plus 是否已损坏。请告诉我这是否正常。 TIA。
【问题讨论】:
-
通常你不应该在循环中改变循环计数器的值。您在这里不需要
i=i+1:这不是循环的工作方式-Next i会注意增量。 -
哇,我很尴尬,这对我来说是一个非常业余的举动,考虑到我的大部分代码通常会变得多么令人讨厌,我对此进行了讨论。我非常感谢您的帮助。也许我最近喝了太多咖啡。非常感谢你。但是,如果蜜蜂认为合适,该职位可能会成立。克里斯