Sub 陳述式 (Visual Basic)

更新:2007 年 11 月

宣告定義 Sub 程序的名稱、參數和程式碼。

[ <attributelist> ] [ Partial ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] 
Sub name [ (Of typeparamlist) ] [ (parameterlist) ] [ Implements implementslist | Handles eventlist ]
    [ statements ]
    [ Exit Sub ]
    [ statements ]
End Sub

參數

  • attributelist
    選擇項,請參閱屬性清單

  • Partial
    選擇項,表示部分方法的宣告。請參閱部分方法

  • accessmodifier
    選擇項,可以是下列其中一項:

    請參閱 Visual Basic 中的存取層級

  • proceduremodifiers
    選擇項,可以是下列其中一項:

  • Shared
    選擇項,請參閱 Shared

  • Shadows
    選擇項,請參閱 Shadows

  • name
    必要項。程序名稱。請參閱宣告項目名稱

  • typeparamlist
    選擇項,泛型程序的型別參數清單。請參閱型別清單

  • parameterlist
    選擇項。代表此程序之參數的區域變數名稱清單。請參閱參數清單

  • Implements
    選擇項。指出此程序會實作一個或多個 Sub 程序,每一個都是在此程序包含的類別或結構所實作的介面中定義。請參閱 Implements 陳述式

  • implementslist
    如果提供 Implements,則為必要項。實作的 Sub 程序清單。

    implementedprocedure [ , implementedprocedure ... ]

    每個 implementedprocedure 都具有下列語法和參數:

    interface.definedname

    參數

    描述

    interface

    必要項。此程序包含之類別或結構所實作的介面名稱。

    definedname

    必要項。在 interface 中定義程序所使用的名稱。

  • Handles
    選擇項。指出此程序可以處理一個或多個特定的事件。請參閱 Handles

  • eventlist
    如果提供 Handles,則為必要項。此程序處理的事件清單。

    eventspecifier [ , eventspecifier ... ]

    每個 eventspecifier 都具有下列語法和參數:

    eventvariable.event

    參數

    描述

    eventvariable

    必要項。以引發事件之類別或結構的資料型別所宣告的物件變數。

    event

    必要項。此程序處理的事件名稱。

  • statements
    選擇項。要在此程序內執行的陳述式區塊。

  • EndSub
    結束此程序的定義。

備註

所有可執行程式碼必須在程序中。當您不需要將值傳回呼叫程式碼時,請使用 Sub 程序。當您需要傳回值時,請使用 Function 程序。

只能在模組層級使用 Sub。這表示 Sub 程序的「宣告內容」必須是類別、結構、模組或介面,且不能是原始程式檔、命名空間 (Namespace)、程序或區塊。如需詳細資訊,請參閱宣告內容和預設存取層級

Sub 程序預設為公用存取。您可以使用存取修飾詞調整存取層級。

規則

  • 實作:如果此程序使用 Implements 關鍵字,則包含的類別或結構必須具有 Implements 陳述式,後面緊跟著它的 Class 或 Structure 陳述式。Implements 陳述式必須包含 implementslist 中指定的每個介面。不過,介面用來定義 Sub 的名稱 (在 definedname 中) 不需要和此程序的名稱 (在 name 中) 相同。

行為

  • 從程序傳回:當 Sub 程序回到呼叫程式碼時,程式碼會繼續執行呼叫該程序的陳述式之後的陳述式。

    Exit Sub 和 Return 陳述式會造成立即退出 Sub 程序。任意數目的 Exit Sub 和 Return 陳述式可以出現在程序中的任何地方,並且 Exit Sub 和 Return 陳述式可以混合使用。

    下列範例會顯示從 Sub 程序傳回。

    Sub mySub(ByVal q As String)
        Return
    End Sub 
    
  • 呼叫程序:Sub 程序和 Function 程序一樣是獨立的程序,可以取得參數並執行一系列的陳述式。不過,與 Function 程序不同的是,Function 程序會傳回值,而 Sub 程序不能使用在運算式中。

    在運算式中,可以使用程序名稱 (後接括在括號中的引數清單) 來呼叫 Sub 程序。只有在沒有提供任何引數的情況下,才可以省略括號。不過,如果一律使用括號,會使程式碼更容易閱讀。

    也可以選擇性地使用 Call 陳述式來呼叫 Sub 函式。這樣可以提高程式碼的可讀性。

疑難排解

執行順序:為了要提高內部效能,Visual Basic 有時會重新排列算術運算式。基於這個原因,如果引數清單中包含會呼叫其他程序的運算式,您就無法以特定的順序呼叫這些程序。

範例

下列範例會使用 Sub 陳述式定義形成 Sub 程序主體的名稱、參數和程式碼。

Sub computeArea(ByVal length As Double, ByVal width As Double)
    ' Declare local variable.
    Dim area As Double
    If length = 0 Or width = 0 Then
        ' If either argument = 0 then exit Sub immediately.
        Exit Sub
    End If
    ' Calculate area of rectangle.
    area = length * width
    ' Print area to Immediate window.
    Debug.WriteLine(area)
End Sub

請參閱

工作

HOW TO:使用泛型類別

程序疑難排解

HOW TO:建立部分方法 (Visual Basic)

概念

參數陣列

部分方法

參考

Implements 陳述式

Function 陳述式 (Visual Basic)

參數清單

Dim 陳述式 (Visual Basic)

Call 陳述式 (Visual Basic)

Of