这是在Excel的VBA循环的样品。这行是VBA中不必要的行吗?
Sub Tests()
Dim a As Integer
Dim b As Integer
b = 5
For a = 1 to b
MsgBox a
Next a
End Sub
当我在Next a
删除a
,脚本仍然正常运行。那么,为什么我们必须有Next a
而非Next
?
这是在Excel的VBA循环的样品。这行是VBA中不必要的行吗?
Sub Tests()
Dim a As Integer
Dim b As Integer
b = 5
For a = 1 to b
MsgBox a
Next a
End Sub
当我在Next a
删除a
,脚本仍然正常运行。那么,为什么我们必须有Next a
而非Next
?
查看有关... Next语句(Visual Basic中)从微软的文档的技术实施部分:http://msdn.microsoft.com/en-us/library/5z06z1kb.aspx
如果嵌套循环,编译器发出错误信号,如果遇到的 Next语句 的下一个语句之前的外部嵌套级别作为内部级别。但是,只有当你在每一个后续语句中指定反编译器可以检测到这种重叠 错误。
因此,最好是更加具体,并指定对抗你递增/递减,因为它有助于编译器检测嵌套循环的错误。但是在所有循环中肯定没有必要 - 它是可选的。
Microsoft建议它的可读性,以及在同一页的反驳部分:
您可以选择指定在接下来声明计数器变量。 这句法提高你的程序的可读性,尤其是如果你 有嵌套For循环。您必须在相应的For语句中指定出现 的变量。
有必要吗?您是否应该使用它。我个人会说是的。在较大的代码中,您可能会有多个嵌套循环。线也许100S线
For a = 1 to b
和线
Next
之间。因此,加上a
后next
真的会帮助确定该循环的开始和结束。
这并没有真正回答标识符在循环中是否必要的问题。 :)(这不是严格必要的,但有些人为了便于阅读,更喜欢这样做)。 –
简而言之,旧的BASIC版本需要使用,例如GW-BASIC。较新的BASIC版本(例如QuickBASIC)保留了用于向后兼容的旧代码的语法。今天,对于Visual Basic版本的VBScript,VBA和Visual BASIC,看起来很奇怪,你必须指定循环变量,因为它们可以推断出循环结束的地方。
我想你会发现随着时间的推移,你会下降Next <variable>
语法。没有附加价值,因此如果在For
语句中更改变量,则必须在Next
语句中更改该变量。
但是,由于BASIC的解释性质,有些时候您需要指定哪些Next
语句适用。在我多年的BASIC编程中,由于语言的新特性,我在早期使用这种技术,而在现代很少使用这种技术。
你不必*使用'Next a',你可以简单地使用'Next',正如你所看到的。 –
纯可读性和首选项 –