VBA 函数与过程的 6 个不同点

在上一篇教程中,我们学习了 VBA 过程VBA 函数基础。教程中介绍了两者的基础用法,可以看到 VBA 过程和函数有很多相似的地方。同时,文章指出函数相对过程最大的不同点是,VBA 函数可以返回值。

今天这篇教程,给大家进一步介绍函数与子过程 6 个不同点。理解这 6 点将帮助大家理清两者的关系,在实际开发中,熟练地混合使用函数和子过程。

第1点:声明语句不同

函数的声明语句是 FunctionEnd Function,而过程的声明语句是 SubEnd Sub

下面的代码是函数声明代码:

Function MyFunc()
    
End Function

下面的代码是子过程声明代码:

Sub SayHello()
    
End Sub

 

第2点:函数可以返回值

函数相对子过程最大的不同点是,函数可以返回指定的值。调用函数时,使用一个变量存储函数返回的值,可以在后续的代码中使用。

这里需要指出的是,函数可以不返回值,这种情况其作用与子过程相同。因此建议,不需要返回值时,直接使用子过程代替函数。

 

第3点:函数需指定返回值类型

在《VBA 变量、类型和运算符》一章中讲到,VBA 中数据有多种类型,准确使用数据类型可以使程序效率更高。

同样,函数声明时也需要指定其返回值的类型。其语法与变量声明类似,在函数名后指定数据类型。

Function MyFunc() As String '指定返回值类型,此函数将返回文本类型的值
    
End Function

 

第4点:函数主体代码中,返回值赋值到函数自己

函数返回一个值,是通过在函数主体代码中,将返回的值赋值到函数自己的方法来实现。

Function MyFunc() As String
    '此函数将返回 Hello World 的文本
    MyFunc = "Hello World"
End Function

 

第5点:调用函数时,使用类型与函数返回值类型相同的变量获得返回值

当主程序中调用函数获取其值时,需要使用类型与函数返回值类型相同的变量,否则程序会出错。

Sub MyCode()
    
    Dim text As String '声明与函数返回值相同类型的变量
    text = MyFunc '调用函数,获得其返回的值
    Range("A1") = text '使用函数返回的值
    
End Sub

'此函数被上面的过程调用
Function MyFunc() As String
    '此函数将返回 Hello World 的文本
    MyFunc = "Hello World"
End Function

 

第6点:函数可在单元格内公式中使用

与 Excel 内置的函数一样,用户自定义编写的函数可在公式中直接使用,其用法与内置函数一样。

自定义函数也一样可以嵌套使用:

 

总结

函数与过程最大的不同是,函数可以返回值,本篇教程在此基础上,总结了函数与子过程的 6 个不同点。根据函数和子过程的不同特性,实际代码中混合使用两者,可以提高开发效率,也有助于更好地组织代码。

学习完不同点,在本章其余教程中,将介绍函数和子过程相似的特性,深入了解函数和子过程的用法。

转载注明:文章转载自「懒人Excel - www.lanrenexcel.com
订阅评论
提醒
8 评论
最新
最旧 最多投票
内联反馈
查看所有评论
晨晨晨晨
2 年 前

第3点:函数需指定返回值类型
在《VBA 变量、类型和运算符》一章中讲到,VBA 中数据有多种类型,准确使用数据类型可以是程序效率更高。
–>应该是…可以使程序效率更高?

aiden
2 年 前

第6点报错 “用户定义类型未定义”,网上说是要在引用中添加,但是引用列表里的选项太多了

dua
3 年 前

为啥在sheet页的代码编辑窗口定义函数,第6点不行呢? 在模块里编写可以

牧羊人
1 年 前
回复给  懒人Excel

我的在模块里面也不行

大宝徐
3 年 前

第三点。函数需要指定返回值类型,不指定返回值类型时返回值默认类型为Variant。

8
0
希望看到您的想法,请您发表评论x