Sub 陳述式 (Visual Basic)

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

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

組件

詞彙

定義

attributelist

選擇項。 請參閱屬性清單

Partial

選擇項。 表示部分方法的宣告。 請參閱部分方法 (Visual Basic)

accessmodifier

選擇項。 可以是下列其中一項:

請參閱Visual Basic 中的存取層級

proceduremodifiers

選擇項。 可以是下列其中一項:

Shared

選擇項。 請參閱 Shared

Shadows

選擇項。 請參閱 Shadows

name

必要項。 程序名稱。 請參閱宣告項目名稱 (Visual Basic)。 若要建立類別的建構函式程序,請將 Sub 程序的名稱設定為 New關鍵字。 如需詳細資訊,請參閱物件存留期:物件的建立和終結 (Visual Basic)

typeparamlist

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

parameterlist

選擇項。 表示這個程序之參數的區域變數名稱清單。 請參閱參數清單 (Visual Basic)

Implements

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

implementslist

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

implementedprocedure [ , implementedprocedure ... ]

每個 implementedprocedure 都具有下列語法和組成部分:

interface.definedname

參數描述
interface 必要項。此程序包含之類別或結構所實作的介面名稱。
definedname 必要項。在 interface 中定義程序所使用的名稱。

Handles

選擇項。 指出此程序可以處理一個或多個特定的事件。 請參閱 Handles 子句 (Visual Basic)

eventlist

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

eventspecifier [ , eventspecifier ... ]

每個 eventspecifier 都具有下列語法和組成部分:

eventvariable.event

參數描述
eventvariable 必要項。以引發事件之類別或結構的資料型別所宣告的物件變數。
event 必要項。這個程序處理的事件名稱。

statements

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

End Sub

結束這個程序的定義。

備註

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

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

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:使用泛型類別 (Visual Basic)

疑難排解程序 (Visual Basic)

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

參考

Implements 陳述式

Function 陳述式 (Visual Basic)

參數清單 (Visual Basic)

Dim 陳述式 (Visual Basic)

Call 陳述式 (Visual Basic)

Of 子句 (Visual Basic)

概念

參數陣列 (Visual Basic)

部分方法 (Visual Basic)