2014-05-01 24 views
1

这是在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

+1

你不必*使用'Next a',你可以简单地使用'Next',正如你所看到的。 –

+0

纯可读性和首选项 –

回答

3

查看有关... Next语句(Visual Basic中)从微软的文档的技术实施部分:http://msdn.microsoft.com/en-us/library/5z06z1kb.aspx

如果嵌套循环,编译器发出错误信号,如果遇到的 Next语句 的下一个语句之前的外部嵌套级别作为内部级别。但是,只有当你在每一个后续语句中指定反编译器可以检测到这种重叠 错误。

因此,最好是更加具体,并指定对抗你递增/递减,因为它有助于编译器检测嵌套循环的错误。但是在所有循环中肯定没有必要 - 它是可选的。

Microsoft建议它的可读性,以及在同一页的反驳部分:

您可以选择指定在接下来声明计数器变量。 这句法提高你的程序的可读性,尤其是如果你 有嵌套For循环。您必须在相应的For语句中指定出现 的变量。

1

有必要吗?您是否应该使用它。我个人会说是的。在较大的代码中,您可能会有多个嵌套循环。线也许100S线

For a = 1 to b 

和线

Next 

之间。因此,加上anext真的会帮助确定该循环的开始和结束。

+4

这并没有真正回答标识符在循环中是否必要的问题。 :)(这不是严格必要的,但有些人为了便于阅读,更喜欢这样做)。 –

0

简而言之,旧的BASIC版本需要使用,例如GW-BASIC。较新的BASIC版本(例如QuickBASIC)保留了用于向后兼容的旧代码的语法。今天,对于Visual Basic版本的VBScript,VBA和Visual BASIC,看起来很奇怪,你必须指定循环变量,因为它们可以推断出循环结束的地方。

我想你会发现随着时间的推移,你会下降Next <variable>语法。没有附加价值,因此如果在For语句中更改变量,则必须在Next语句中更改该变量。

但是,由于BASIC的解释性质,有些时候您需要指定哪些Next语句适用。在我多年的BASIC编程中,由于语言的新特性,我在早期使用这种技术,而在现代很少使用这种技术。