我正在使用一个For... Next
循环填充数组,如下所示
ReDim array(1 to 100, 1 to 100)
For i = 1 to 100
Next i
But the i
计数器似乎总是转到 101,而不是停止在 100。因此,这会在我的数组中创建第 101 个元素,这会给我错误“下标超出范围”。有人知道如何解决吗?
The Next i
步骤相当于写作
i = i + Step 'Step is an optional parameter which defaults to 1 for VBA For loops
Goto Loop_Start
因此,当你完成循环时,计数器将始终设置为 1(或更多,具体取决于Step
size)大于产生的最大循环值True
健康)状况。
您可以尝试这个小代码来亲自测试一下。
Sub TestCLoop()
Dim i As Long
For i = 1 To 100
Next i
MsgBox i
End Sub
你将得到的结果是...
如果您计划在循环完成后使用“最后一个值”,则方法是
Sub TestCLoop()
Dim i As Long, MaxValue as Long
MaxValue = 100
For i = 1 To MaxValue
' Do something
Next i
i = MaxValue
'Use i now
End Sub
如果大量代码使用,这应该可以解决问题i
已经写好了。恕我直言,在增量循环过程中使用增量变量后,您不应该使用它们,因为它会导致错误,例如您刚刚经历过的错误(除非您真的知道自己在做什么,例如知道什么)Next i
确实如此)。
此外,一个好的设计实践是,不要将循环运行到硬编码的最大值,而是运行到保存该值的变量或在程序中非常明显的位置声明的某个常量。这使得代码的修改变得更加容易,并且更有可能保持无错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)