函数是一段执行特定任务并返回结果的代码。函数主要用于执行重复性任务, 例如执行计算, 格式化输出数据等。
在VBA中, 你可以创建可以在工作表中使用的函数或用户定义函数, 就像常规函数一样。
当现有的excel函数还不够时, 这将非常有用。在这些情况下, 你可以创建自定义的用户定义函数来满足你的特定需求。
你可以将功能放入模块中。让我们一步一步看:
步骤1:转到“开发人员”复选框。
【VBA使用函数】步骤2:单击Visual Basic编辑器。

文章图片
步骤3:然后点击“插入”按钮。
步骤4:选择Module(模块)选项。

文章图片
句法
Private Function FunctionName (ByVal arg1 As Integer, ByVal arg2 As Integer)FunctionName = arg1 + arg2 End Function
例如, 在下面的代码中假设一个名为Sum的函数, 例如:
Private Function Sum (x As Double, y As Double) As DoubleArea = x + yEnd Function
说明:在此示例中, 函数具有两个参数(双精度类型)和一个返回类型(也为双精度类型)。函数名称是Sum, 表示要返回的结果, 例如(x + y)。
现在, 你可以在代码中的其他位置使用此函数, 方法是仅使用函数名称(总和)并为每个参数指定一个值。
在你的工作表上插入一个命令按钮, 并添加以下代码。
Dim z As Double z = Sum (4, 8) + 3MsgBox z
说明:你可以使用另一个变量z来存储结果。该函数返回一个值, 因此你必须在代码中捕获这些值。另外, 你可以向该变量添加另一个值。使用MsgBox显示值。
单击工作表上的命令按钮后, 你将得到以下结果。

文章图片
例
函数与子例程非常相似。函数和子例程之间的唯一区别是, 函数在调用时会返回值, 但是子例程在调用时不会返回值。
假设你要查找区域, 因此需要创建一个函数, 该函数接受可以使用函数名称本身返回的值。
步骤1:将命令按钮添加到工作表。

文章图片
1.然后设置“命令”按钮的“名称”属性。

文章图片
2.设置命令按钮的标题属性。
3.现在, 界面如下图所示。

文章图片
步骤2:打开代码窗口并编写以下代码。
Private Function Area(Length As Double, Optional Width As Variant)If IsMissing(Width) ThenArea = Length * LengthElseArea = Length * WidthEnd IfEnd Function
步骤3:编写调用该函数的代码。
- 右键单击btnArea_Click命令按钮。
- 选择查看代码选项。
- 并添加以下代码。
Private Sub btnAreaFunction_Click()MsgBox Area(5, 9)End Sub
步骤4:运行上面的代码, 你将获得以下输出, 如下面的屏幕快照所示。

文章图片
推荐阅读
- VBA If Else If语句
- VBA for循环
- VBA for each循环
- 访问VBA编辑器
- VBA Do While循环
- VBA do until循环
- VBA数据类型
- VBA常数
- VBA压缩运算符