Sub 陳述式

宣告形成 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 無法與 ByValByRefOptional 搭配使用。
varname 此為必要動作。 代表自變數的變數名稱;遵循標準變數命名慣例。
type 選用。 傳遞至程式之自變數的數據類型;可能是 ByteBooleanIntegerLongCurrencySingleDoubleDecimal (目前不支援) 、日期字符串 (只) 、ObjectVariant 或特定物件類型。 如果參數不是 選擇性,也可以指定 使用者定義型 別。
defaultvalue 選用。 任何 常數 或常 數表達式。 僅適用於 選擇性 參數。 如果類型是 Object,則明確預設值只能是 Nothing

註解

如果未使用 PublicPrivateFriend 明確指定, 則子 程式預設為公用。

如果未使用 Static ,則不會在呼叫之間保留局部變數的值。

Friend 關鍵詞只能用於類模組。 不過, Friend 程式可由專案任何模組中的程式存取。 Friend 程式不會出現在其父類別的類型庫中,也不會晚期綁定 Friend 程式。

程式可以是遞歸的;也就是說,他們可以呼叫自己來執行指定的工作。 不過,遞歸可能會導致堆疊溢出。 Static 關鍵詞通常不會與遞歸程式搭配使用。

所有可執行程式代碼都必須在 程式中。 您無法在另一個 Sub、FunctionProperty 程式內定義 Sub 程式。

Exit Sub 關鍵詞會導致立即結束 Sub 程式。 程序執行會在呼叫 Sub 程式的 語句後面繼續執行 語句。 任何數目的 Exit Sub 語句都可以出現在 Sub 程式中的任何位置。

函式 程式一樣, Sub 程式是個別的程式,可以接受自變數、執行一系列的語句,以及變更其自變數的值。 不過,不同於會傳回值的 Function 程式, Sub 程式無法在表達式中使用。

您可以使用程式名稱後面接著自變數清單來呼叫 Sub 程式。 如需如何呼叫 Sub 程式的特定資訊,請參閱 Call 語句。

Sub 程式中 使用的變數分為兩個類別:在程式內明確宣告的變數,以及未宣告的變數。 在程式中明確宣告的變數 (使用 Dim 或對等) 一律是程式的本機變數。 在程式中使用但未明確宣告的變數也是本機的,除非這些變數是在程式外的某個較高層級明確宣告。

程式可以使用未在程式中明確宣告的變數,但如果您在 模組層級 定義的任何專案具有相同的名稱,就會發生命名衝突。 如果您的程式參考與另一個程式、常數或變數同名的未宣告變數,則會假設您的程式參考該模組層級名稱。 若要避免這種衝突,請明確宣告變數。 使用 Option Explicit 語句來強制明確宣告變數。

注意事項

您無法使用 GoSubGoToReturn 來輸入或結束 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 支援與意見反應