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
语法解释
代码 | 行动 |
---|---|
|
|
|
|
|
|
以下子例程接受名字和姓氏,并在消息框中显示它们。
现在我们将进行编程并执行此子过程。让我们看看。
如何在 VBA 中调用子例程
以下是如何在 VBA 中调用子例程的步骤
- 设计用户界面并设置用户控件的属性。
- 添加子例程
- 编写命令按钮的点击事件代码以调用子例程
- 测试应用程序
步骤 1) 用户界面
按如下所示设计用户界面。
设置以下属性。我们正在设置的属性
序号 | 控制 | 属性 | 值 |
---|---|---|---|
1 | CommandButton1 | 名称 | btnDisplayFullName |
2 | 标题 | FullName 子例程 |
您的界面现在应该如下所示。
步骤 2) 添加子例程
- 按 Alt + F11 打开代码窗口
- 添加以下子例程
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
代码中的“HERE”:
代码 | 操作 |
---|---|
|
|
|
|
|
|
步骤 3) 调用子例程
从命令按钮点击事件调用子例程。
- 右键单击命令按钮,如下图所示。选择“查看代码”。
- 代码编辑器将打开
为 btnDisplayFullName 命令按钮的点击事件在代码编辑器中添加以下代码。
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
您的代码窗口现在应该如下所示
保存更改并关闭代码窗口。
步骤 4) 测试代码
在开发人员工具栏中,将设计模式“关闭”。如下图所示。
步骤 5) 点击“FullName Subroutine”命令按钮。
您将看到以下结果
摘要
- 子例程是执行特定任务的代码段。子例程在执行后不返回值
- 子例程提供代码重用性
- 子例程有助于将大段代码分解为小的、易于管理的块。