Excel VBA 子例程:如何在 VBA 中调用子例程(附示例)

什么是 VBA 中的子例程?

VBA 中的子例程是一段代码,它执行代码中描述的特定任务,但不返回结果或值。子例程用于将大段代码分解为小的、易于管理的单元。子例程可以从程序中的任何位置多次调用。

假设您创建了一个带有文本框的用户界面,用于接受用户输入的日期。您可以创建一个子例程来清除文本框的内容。在这种情况下,VBA 调用子例程是合适的,因为您不希望返回任何结果。

为什么使用子例程

  • 将代码分解为小的、易于管理的块:一般的计算机程序有成千上万行源代码。这会增加复杂性。子例程通过将程序分解为小的、易于管理的代码块来帮助解决此问题。
  • 代码可重用性。假设您有一个需要访问数据库的程序,几乎程序中的所有窗口都需要与数据库交互。您可以创建一个处理所有数据库交互的函数,而不是为这些窗口编写单独的代码。然后,您可以从任何您想要的窗口调用它。
  • 子例程和函数是自文档化的。假设您有一个名为 calculateLoanInterest 的函数,另一个名为 connectToDatabase。仅通过查看子例程/函数的名称,程序员就能知道程序的作用。

命名子例程和函数的规则

要使用子例程和函数,有一些必须遵循的规则。

  • 子例程或 VBA 调用函数名称中不能包含空格
  • Excel VBA 调用子例程或函数名称应以字母或下划线开头。它不能以数字或特殊字符开头
  • 子例程或函数名称不能是关键字。关键字是在VBA 中具有特殊含义的单词。Private、Sub、Function 和 End 等单词都是关键字的示例。编译器使用它们执行特定任务。

VBA 子例程语法

您需要启用 Excel 中的“开发人员”选项卡才能跟随本示例。如果您不知道如何启用“开发人员”选项卡,请阅读有关VBA 运算符的教程

语法中的“HERE”:

Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String)
    'do something
End Sub

语法解释

代码 行动
  • “Private Sub mySubRoutine(…)”
  • 这里使用关键字“Sub”来声明一个名为“mySubRoutine”的子例程并开始子例程的主体。
  • 关键字 Private 用于指定子例程的范围
  • “ByVal arg1 As String, ByVal arg2 As String”
  • 它声明了两个名为 arg1 和 arg2 的字符串数据类型的参数
  • “End Sub”
  • “End Sub”用于结束子例程的主体

以下子例程接受名字和姓氏,并在消息框中显示它们。

现在我们将进行编程并执行此子过程。让我们看看。

如何在 VBA 中调用子例程

以下是如何在 VBA 中调用子例程的步骤

  1. 设计用户界面并设置用户控件的属性。
  2. 添加子例程
  3. 编写命令按钮的点击事件代码以调用子例程
  4. 测试应用程序

步骤 1) 用户界面

按如下所示设计用户界面。

How to Call Sub in VBA

设置以下属性。我们正在设置的属性

序号 控制 属性
1 CommandButton1 名称 btnDisplayFullName
2 标题 FullName 子例程


您的界面现在应该如下所示。

How to Call Sub in VBA

步骤 2) 添加子例程

  1. 按 Alt + F11 打开代码窗口
  2. 添加以下子例程
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String)
    MsgBox firstName & " " & lastName
End Sub

代码中的“HERE”:

代码 操作
  • “Private Sub displayFullName(…)”
  • 它声明了一个私有的子例程 displayFullName,该子例程接受两个字符串参数。
  • “ByVal firstName As String, ByVal lastName As String”
  • 它声明了两个参数变量 firstName 和 lastName
  • MsgBox firstName & ” ” & lastName”
  • 它调用 MsgBox 内置函数来显示消息框。然后将“firstName”和“lastName”变量作为参数传递。
  • 使用“&”来连接两个变量并在它们之间添加一个空空格。

步骤 3) 调用子例程

从命令按钮点击事件调用子例程。

  • 右键单击命令按钮,如下图所示。选择“查看代码”。
  • 代码编辑器将打开

How to Call Sub in VBA

为 btnDisplayFullName 命令按钮的点击事件在代码编辑器中添加以下代码。

Private Sub btnDisplayFullName_Click()
    displayFullName "John", "Doe"
End Sub

您的代码窗口现在应该如下所示

How to Call Sub in VBA

保存更改并关闭代码窗口。

步骤 4) 测试代码

在开发人员工具栏中,将设计模式“关闭”。如下图所示。

How to Call Sub in VBA

步骤 5) 点击“FullName Subroutine”命令按钮。

您将看到以下结果

How to Call Sub in VBA

下载上面的 Excel 代码

摘要

  • 子例程是执行特定任务的代码段。子例程在执行后不返回值
  • 子例程提供代码重用性
  • 子例程有助于将大段代码分解为小的、易于管理的块。