2014-05-01 26 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編程中,由於語言的新特性,我在早期使用這種技術,而在現代很少使用這種技術。