> 深入了解自定义函数 形参和实参自定义函数中有形参和实参这两种概念,怎么来理解呢?先来看下面的例子 Function GreetUsers(UserName As String) As String
GreetUsers = 'welcome, ' & UserName
End Function
Sub SayHello()
Debug.Print GreetUsers('A哥')
End Sub
在GreetUser(“A哥”)中,将实参”A哥”传递给了函数GreetUser(),这个值被存储在形参UserName里。 函数里的形参和实参的结合有两种方式:按照地址传值ByRef和按照值传值ByVal ByRef (默认模式)通俗点讲就是系统直接把实参的地址传给了形参。由于形参现在和实参共享一个地址,在函数处理过后,实参的数值会相应的变化。 Function trybydefault(i As Integer) As Integer
i = i 1
trybydefault = i
End Function
Sub test_function()
Dim n%
n = 2
Debug.Print trybydefault(n)
Debug.Print n
End Sub 上面返回3,3 也就是函数处理的过程中: ByVal(传递数值)如果使用需要特殊指定ByVal Function trybydefault(byval i As Integer) As Integer
i = i 1
trybydefault = i
End Function
Sub test_function()
Dim n%
n = 2
Debug.Print trybydefault(n)
Debug.Print n
End Sub 返回3,2 也就是实参数值并未发生改变。 文章的最后,附上某位小朋友曾经提过的问题,让大家体会一下ByRef和ByVal是多么受出卷老师的喜欢,在这里要手动@野子。。。 总结一下
|
|