以下代码展示了以下奇怪的行为: 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。重点是我知道在for语句中附加“Step 0”会给出单位增量但是这感觉就像是一个解决方法来解决Step增量全部一起?我不得不怀疑我的2013 excel pro plus是否已损坏。请告诉我这是否正常。 TIA。
答案 0 :(得分:1)
但你在代码中有这一行:
i = i + 1
这使得它跳得加倍,因为它也是你的循环变量!
因此,为了增加你的变量,你不必在循环中做i = i + 1。你必须,如果它是一个while循环。但是从来没有在For循环中,因为你正在干扰循环。 (除非这是你的确切意图。)
答案 1 :(得分:-1)
伙计我能说什么?更确切地说,如果你看一下我没有包含的代码块:
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To 8 Step 0
MsgBox i
ActiveCell.Offset(1, 0).Range("A1").Select
i = i + 1
Next i
End Sub
你可能能够理解"步骤0"的价值,这允许用户通过i = i + 1对增量步骤进行全面控制,或者更通常地对于函数f(), i = f(i)。因此,不会在" For i = ..."等级可能实际上有一些效用,取决于你自己找到的果酱类型。
总结:a。)省略Step修饰符相当于默认值,即Step = 1. b。)将Step修饰符归零,Step = 0需要" do while"通过放置在循环内的i = f(i)显式递增的方法。最后,我不打算对此进行测试,但是使用Step = 0并且没有增加递增可能会导致无限循环或根据情况抛出错误(所以避免Step = 0可能是个好主意,除非你确定你的f(i)及其在循环块中的位置!)。