Sub 陳述式
語法
[ Private | 公共 | Friend ][ Static ] 子名稱 [ ( arglist ) ]
[ statements ]
[ Exit Sub ]
[ statements ]
結束子
Sub 語句語法具有下列部分:
部分 | 描述 |
---|---|
Public | 選用。 表示 Sub 程式可供所有模組中的所有其他程式存 取。 如果用於包含 Option Private 語句的模組中,則無法在專案外部使用 此程式。 |
Private | 選用。 指出 Sub 程式只能供宣告它的模組中的其他程式存取。 |
Friend | 選用。 僅用於 類模組。 表示 子 程式在整個 項目中可見,但對象實例的控制器看不到。 |
Static | 選用。 表示 子 程式的局部 變數 會在呼叫之間保留。 靜態屬性不會影響在 Sub 外部宣告的變數,即使這些變數用於程式中也一般。 |
name | 此為必要動作。 子的名稱;遵循標準變數命名慣例。 |
arglist | 選用。 變數清單,代表呼叫子程式時傳遞至 子 程式的自變數。 多個變數會以逗號分隔。 |
陳述式 | 選用。 要在 Sub 程式內執行的任何語句群組。 |
arglist 引數具有下列語法和部分︰
[ 選擇性 ][ ByVal | ByRef ][ ParamArray ] varname [ ( ) ] [ Astype ] [ =defaultvalue ]
部分 | 描述 |
---|---|
Optional | 選用。 指出不需要自變數的關鍵詞。 如果使用, arglist 中的所有後續自變數也必須是選擇性自變數,並使用 Optional 關鍵詞來宣告。 如果已使用 ParamArray ,則不能在任何引數中使用 Optional 。 |
ByVal | 選用。 表示引數以傳值方式傳遞。 |
ByRef | 選用。 表示引數以傳參考方式傳遞。 ByRef 是 VBA 中的預設值,與 Visual Basic .NET 不同。 |
ParamArray | 選用。 僅作為arglist中的最後一個自變數,以指出最終自變數是 Variant 元素的選擇性陣列。 ParamArray 關鍵字可讓您提供引數的任意數。 ParamArray 無法與 ByVal、 ByRef 或 Optional 搭配使用。 |
varname | 此為必要動作。 代表自變數的變數名稱;遵循標準變數命名慣例。 |
type | 選用。 傳遞至程式之自變數的數據類型;可能是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal (目前不支援) 、日期、字符串 (只) 、Object、Variant 或特定物件類型。 如果參數不是 選擇性,也可以指定 使用者定義型 別。 |
defaultvalue | 選用。 任何 常數 或常 數表達式。 僅適用於 選擇性 參數。 如果類型是 Object,則明確預設值只能是 Nothing。 |
註解
如果未使用 Public、 Private 或 Friend 明確指定, 則子 程式預設為公用。
如果未使用 Static ,則不會在呼叫之間保留局部變數的值。
Friend 關鍵詞只能用於類模組。 不過, Friend 程式可由專案任何模組中的程式存取。 Friend 程式不會出現在其父類別的類型庫中,也不會晚期綁定 Friend 程式。
子 程式可以是遞歸的;也就是說,他們可以呼叫自己來執行指定的工作。 不過,遞歸可能會導致堆疊溢出。 Static 關鍵詞通常不會與遞歸子程式搭配使用。
所有可執行程式代碼都必須在 程式中。 您無法在另一個 Sub、Function 或 Property 程式內定義 Sub 程式。
Exit Sub 關鍵詞會導致立即結束 Sub 程式。 程序執行會在呼叫 Sub 程式的 語句後面繼續執行 語句。 任何數目的 Exit Sub 語句都可以出現在 Sub 程式中的任何位置。
和 函式 程式一樣, Sub 程式是個別的程式,可以接受自變數、執行一系列的語句,以及變更其自變數的值。 不過,不同於會傳回值的 Function 程式, Sub 程式無法在表達式中使用。
您可以使用程式名稱後面接著自變數清單來呼叫 Sub 程式。 如需如何呼叫 Sub 程式的特定資訊,請參閱 Call 語句。
Sub 程式中 使用的變數分為兩個類別:在程式內明確宣告的變數,以及未宣告的變數。 在程式中明確宣告的變數 (使用 Dim 或對等) 一律是程式的本機變數。 在程式中使用但未明確宣告的變數也是本機的,除非這些變數是在程式外的某個較高層級明確宣告。
程式可以使用未在程式中明確宣告的變數,但如果您在 模組層級 定義的任何專案具有相同的名稱,就會發生命名衝突。 如果您的程式參考與另一個程式、常數或變數同名的未宣告變數,則會假設您的程式參考該模組層級名稱。 若要避免這種衝突,請明確宣告變數。 使用 Option Explicit 語句來強制明確宣告變數。
注意事項
您無法使用 GoSub、 GoTo 或 Return 來輸入或結束 Sub 程式。
範例
這個範例會使用 Sub 語句來定義形成 Sub 程式主體的名稱、自變數和程式代碼。
' Sub procedure definition.
' Sub procedure with two arguments.
Sub SubComputeArea(Length, TheWidth)
Dim Area As Double ' Declare local variable.
If Length = 0 Or TheWidth = 0 Then
' If either argument = 0.
Exit Sub ' Exit Sub immediately.
End If
Area = Length * TheWidth ' Calculate area of rectangle.
Debug.Print Area ' Print Area to Debug window.
End Sub
另請參閱
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。