这行在VBA中是不必要的行吗?

这是excel的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

请参阅有关来自Microsoft的For … Next语句(Visual Basic)的技术实现部分: http : //msdn.microsoft.com/en-us/library/5z06z1kb.aspx

如果您嵌套循环,则编译器会在内部级别的Next语句之前遇到外部嵌套级别的Next语句时发出错误。 但是,只有在每个Next语句中指定计数器时,编译器才能检测到此重叠错误。

所以最好是更具体一点,并指定你正在递增/递减的计数器,因为它有助于编译器检测嵌套循环中的错误。 但在所有循环中肯定没有必要 – 这是可选的。

Microsoftbuild议为了便于阅读,同样在同一页面的Counter Argument部分:

您可以select在Next语句中指定计数器variables。 这个语法提高了程序的可读性,特别是如果你有嵌套的For循环。 您必须指定出现在相应的For语句中的variables。

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

 For a = 1 to b 

和线

 Next 

因此, next添加a将确实有助于确定循环开始和结束的位置。

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

我想你会发现随着时间的推移,你会放弃Next <variable>语法。 没有增加值的使用,使得维护有点困难,因为如果你改变For语句中的variables,你将不得不在Next语句中改变它。

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