VBA基礎語法:GoTo語句


GoTo 語句

無條件地轉移到過程中指定的行。

語法

GoTo line

必要的 line 參數可以是任意的行標簽行號

說明

GoTo 只能跳到它所在過程中的行。

注意 太多的 GoTo 語句,會使程序代碼不容易閱讀及調試。盡可能使用結構化控制語句(Do...Loop、For...Next、If...Then...Else、Select Case)。

GoTo 語句示例

本示例使用 GoTo 語句在一個過程內的不同程序段間作流程控制,不同程序段用不同的“程序標簽”來區隔。

  1.  
    Sub GotoStatementDemo()
  2.  
    Dim Number, MyString
  3.  
    Number = 1 ' 設置變量初始值。
  4.  
    ' 判斷 Number 的值以決定要完成那一個程序區段(以“程序標簽”來表式)。
  5.  
    If Number = 1 Then GoTo Line1 Else GoTo Line2
  6.  
     
  7.  
    Line1:
  8.  
    MyString = "Number equals 1"
  9.  
    GoTo LastLine ' 完成最后一行。
  10.  
    Line2:
  11.  
    ' 下列的語句根本不會被完成。
  12.  
    MyString = "Number equals 2"
  13.  
    LastLine:
  14.  
    Debug.Print MyString ' 將“"Number equals 1"”顯示在“立即”窗口。
  15.  
    End Sub

On...GoSub、On...GoTo 語句

根據表達式的值,轉到特定行執行。

語法

On expression GoSub destinationlist

On expression GoTo destinationlist

On...GoSub 和 On...GoTo 語句的語法具有以下幾個部分:

部分 描述
expression 必要參數。數值表達式,其運算結果應該是一個界於 0 到 255 之間的整數,包含 0 和 255。如果 expression 的計算結果不是一個整數,則它會先四舍五入為一個整數。
destinationlist 必要參數。行號行標簽的列表,之間要以逗號隔開。

說明

expression 的值會決定轉到 destinationlist 中的哪一行。如果 expression 的值小於 1 或大於列表的項目個數,則會產生下面的結果之一:

如果表達式的值
等於 0 控制權會轉移到 On...GoSub 或 On...GoTo 之后的語句
大於串的項目個數 控制權會轉移到 On...GoSub 或 On...GoTo 之后的語句。
負數 會發生錯誤。
大於 255 會發生錯誤。

可以在同一個列表中混合使用行號和行標簽。在 On...GoSub 和 On...GoTo 中也可隨意使用任意個行號和行標簽。但是,如果使用了太多的行標簽或行號,以至於在一行中放不下,那么就必須在一行后使用續行符來銜接到下一行。

提示 若要執行多重分支,Select Case 提供了一種結構化與適應性更強的方法。

On...GoSub 及 On...GoTo 語句示例

本示例使用 On...GoSub 及 On...GoTo 語句來完成不同的子程序或程序區段。

  1.  
    Sub OnGosubGotoDemo()
  2.  
    Dim Number, MyString
  3.  
    Number = 2 ' 設置變量初值。
  4.  
    ' Branch to Sub2.
  5.  
    On Number GoSub Sub1, Sub2 ' 在 On...GoSub 退出後,程序會回到此處來繼續完成。
  6.  
    On Number GoTo Line1, Line2 ' 完成 Line2 標記之區段。
  7.  
    ' 在 On...GoTo 退出之后,程序不會回到此處來。
  8.  
    Exit Sub
  9.  
    Sub1:
  10.  
    MyString = "In Sub1" : Return
  11.  
    Sub2:
  12.  
    MyString = "In Sub2" : Return
  13.  
    Line1:
  14.  
    MyString = "In Line1"
  15.  
    Line2:
  16.  
    MyString = "In Line2"
  17.  
    End Sub

source:VBA Help

 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM