呼叫 Sub 和函式程序

若要從另一個程序呼叫程序,請輸入程序的名稱,並包含任何必要引數的值。 Call 陳述式並非必要,但如果您要使用的話,就必須以括號括住任何引數。

使用程序來組織其他的程序,以便其更容易理解及進行偵錯。 在下列範例中,程序Main會呼叫程序MultiBeep,傳遞 56 的值作為引數。

MultiBeep 執行之後,控制項會傳回 Main,然後 Main 會呼叫程序MessageMessage 會顯示訊息方塊;當使用者按一下 [確定] 時,控制項會傳回 Main,且 Main 完成。

Sub Main() 
 MultiBeep 56 
 Message 
End Sub 
 
Sub MultiBeep(numbeeps) 
 For counter = 1 To numbeeps 
 Beep 
 Next counter 
End Sub 
 
Sub Message() 
 MsgBox "Time to take a break!" 
End Sub

注意事項

對於開發跨多個平台,擴充使用者 Office 體驗的解決方案感到興趣嗎? 請參閱新的 Office 增益集模型。 與 VSTO 增益集和解決方案相比,Office 增益集的佔用空間較小,而且您可以使用幾乎任何網頁程式技術 (例如 HTML5、JavaScript、CSS3 和 XML) 來建立這些增益集。

使用多個引數呼叫子程序

下列範例顯示使用多個引數來呼叫程序的兩種方法。 第二次呼叫時,必須使用括號括住引數,因為已使用了 Call 陳述式。

Sub Main() 
 HouseCalc 99800, 43100 
 Call HouseCalc(380950, 49500) 
End Sub 
 
Sub HouseCalc(price As Single, wage As Single) 
 If 2.5 * wage <= 0.8 * price Then 
 MsgBox "You cannot afford this house." 
 Else 
 MsgBox "This house is affordable." 
 End If 
End Sub

呼叫函式時,請使用括號

若要使用函式的傳回值,請將函式指定為變數,並以括號括住引數,如下列範例所示。

Answer3 = MsgBox("Are you happy with your salary?", 4, "Question 3") 

如果您不想要函式的傳回值,可以使用呼叫程序的相同方式來呼叫函式。 省略括號、列出引數,並請勿將函式指派給變數,如下列範例所示。

MsgBox "Task Completed!", 0, "Task Box" 

如果您在上述範例中包含括號,陳述式就會導致語法錯誤。

傳遞具名引數

程序或函式程序中的陳述式可以將值傳遞至所呼叫的程序,方法是使用具名引數。 您可以使用任何順序來列出具名引數。 具名引數包含引數的名稱、後面加上冒號和等號 (:=),以及指派給此引數的值。

下列範例會使用不含傳回值的具名引數來呼叫 MsgBox 函式。

MsgBox Title:="Task Box", Prompt:="Task Completed!" 

下列範例會使用具名引數來呼叫 MsgBox 函式。 傳回值已指派給變數。

answer3 = MsgBox(Title:="Question 3", _ 
Prompt:="Are you happy with your salary?", Buttons:=4) 

另請參閱

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應