调用 Sub 和 Function 过程

若要从其他过程中调用某个 Sub 过程,请键入该过程的名称并包含任何所需的参数值。 不需要使用 Call 语句,但如果使用了该语句,则必须将任何参数包含在圆括号内。

使用过程来组织其他过程,使其更易于理解和调试。 In the following example, the Sub procedure Main calls the Sub procedure MultiBeep, passing the value 56 for its argument.

MultiBeep 运行后,控件返回到 Main,且 Main 调用 Sub 过程 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外接程序占用的空间较小,您可以使用几乎任何Web编程技术(例如HTML5,JavaScript,CSS3和XML)来构建它们。

使用多个参数调用 Sub 过程

下面的示例演示了使用多个参数调用 Sub 过程的两种方法。 第二次调用它时,需要将参数包含在圆括号内,因为使用了 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

在调用 Function 过程时使用圆括号

若要使用函数的返回值,请将该函数分配给变量并将参数包含在圆括号内,如以下示例所示。

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

如果对函数的返回值不感兴趣,则可以按照调用 Sub 过程的同样方式调用函数。 省略圆括号,列出参数,且不要将函数分配给变量,如以下示例所示。

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

如果您在上述示例中包含圆括号,则该语句将导致语法错误。

传递命名参数

SubFunction 过程中的语句可使用命名参数将值传递给所调用的过程。 您可以按照任何顺序列出命名参数。 命名参数包含参数的名称后跟一个冒号和一个等号 (:=) 以及分配给该参数的值。

以下示例使用命名参数调用 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。