![](/img/trans.png)
[英]Difference between 'on error goto 0' and 'on error goto -1' — VBA
[英]What's the difference between GoTo, using a Select, and using separate function?
首先,我知道使用Goto
從來都不是一個好主意。 但是我很難看出以下結構之間的區別......所有它們都按順序處理條件,當它們找到真值時停止處理,然后將控制權返回到代碼中的指定位置(下一行,如這就是這個特定的“GoTo”目標所在)。 有什么區別:
如果使用 GoTo:
If ConditionA then 'This is designed to skip the evaluation of condition B if condition A is met.
Do something
Goto Resume
End If
If ConditionB then
Do something
Goto Resume
End If
Resume:
選擇案例:
Select ConditionIsTrue 'This will also skip the evaluation of B if A is true.
Case A
Do something
Case B
Do something
End select
單獨的子:
EvaluateConditions(condition)
Sub EvaluateConditions(condition)
If A then
DoSomething
Exit Sub
End If
If B then
DoSomething
Exit Sub
End If
End Sub
一般來說,
'goto' 將執行控制轉移到您指定的標簽。 控件永遠不會回到您使用“goto”的地方。 由於程序流程完全改變,因此不建議使用“goto”。 調試變得困難。
當您編寫一個子例程並從代碼的其他部分調用它時,一旦子例程的執行完成,控制權就會轉移回代碼的被調用部分。 因此,與 goto 不同,程序流程不會受到影響,並且始終建議使用子程序而不是 goto。
在 select 語句的情況下,它與多個 'if-else' 語句沒有太大區別。 而不是有太多的“if-else”,你可以使用“select”來獲得更清晰的代碼。
具體到您所問的內容,所有三個都相同,因此沒有區別。 您選擇什么取決於您的要求、條件數量、代碼段的可重用性和未來的增強功能。
如果您的條件很少(2 或 3),並且您確定這段代碼不需要未來的增強,那么使用 goto 是“可以的”。(仍然不是一個很好的選擇)
如果一段代碼應該是可重用的,甚至是其他的,使用子程序是最好的選擇。 事實上,即使你有很少的條件,最好在子程序中使用“select”語句,這樣你的代碼看起來很干凈,並且很容易在未來添加更多條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.