函数是在任何编程语言中都有着举足轻重的作用,在Excel VBA 中同样重要
定义:围绕函数的核心功能划分,从外界传递可以增强函数的灵活性,传递的实参和函数定义时的形参都有其语言的规则,本小节归纳函数传参初级常用方法和分类。
VB默认地按地址(关键字ByRef)给函数过程(或子程序)传递信息
描述 | 关键字 | 备注 |
---|---|---|
按地址传递 | ByRef | 函数改变了参数值,原始的数值就被改变了 |
按值传递 | ByVal | VB会复制一份原始数据,然后将复制值传递给函数,如果函数改变了参数数值,原始数据依然不会变——只有复制值变化 |
代码示例
一、ByRef 示例
Sub callFunctionWithDifferentParas()
Rem 定义个初始数值
Dim init_value As Integer
Let init_value = 100
calc_value = add(init_value)
Rem 变量原始值被修改:init_value 由100 变为 101
Debug.Print "原始数值:->" & init_value
Debug.Print "调用函数结果:->" & calc_value
End Sub
Rem 按照地址传递
Function add(ByRef value As Integer)
value = value + 1
add = value
End Function
以上代码动态展示效果
二、ByVal示例
Sub callFunctionWithDifferentParas()
Rem 定义个初始数值
Dim init_value As Integer
Let init_value = 100
calc_value = add(init_value)
Rem 变量原始值不变:init_value 由100 仍为为 100
Debug.Print "原始数值:->" & init_value
Debug.Print "调用函数结果:->" & calc_value
End Sub
Rem 按照值传递
Function add(ByVal value As Integer)
value = value + 1
add = value
End Function
以上代码动态展示效果
总结
在具体代码逻辑过程中,需要根据业务的内容灵活选择合适的传递参数形式,来解决真实的业务问题。