VBA中方法传参

将变量作为参数传递给方法数组

 1 Sub Test()
 2 Dim a As Integer
 3     a = 1
 4 Add a
 5 Debug.Print a      '引用传递,a的值发生了变化,输出101
 6 End Sub
 7 
 8 Function Add(a As Integer)
 9    a = a + 100
10 End Function

   结论:VB传参时默认是引用传递byRef。函数

使用byVal关键字强制形参为值传递spa

 1 Sub Test()
 2 Dim a As Integer
 3     a = 1
 4 Add a
 5 Debug.Print a      '值传递,a的值没有变化,输出1
 6 End Sub
 7 
 8 Function Add(ByVal a As Integer)
 9    a = a + 100
10 End Function

调用一个有返回值函数code

 1 Sub Test()
 2 Dim a As Integer
 3     a = 1
 4 Dim sum As Integer
 5     sum = Add(a)
 6 Debug.Print sum      '引用传递,输出101
 7 End Sub
 8 
 9 Function Add(a As Integer) As Integer
10   Add = a + 100
11 End Function

  认识“()”blog

 1 Sub Test()
 2 Dim a As Integer
 3     a = 1
 4     Add (a)
 5 Debug.Print a                 'a的值没有变化,输出1
 6 End Sub
 7 
 8 Function Add(ByRef a As Integer) As Integer
 9   a = a + 100
10 End Function

    解释:io

    一、Add只有一个参数,而且是“过程式调用”方式的时候,VBE“偷偷”把代码自动改成了Add   (a)。注意,Add和(a)之间有个“空格”编译

    2、()在此有彻底不一样的意义,能够理解它是一个运算符。(a)生成了一个临时变量,a的一个副本,而后将这个临时变量(a)传递给Addclass

    三、a自己并无传递给Add方法,因此a的值并不会有任何变化。变量

将一个数组作为参数传递给方法:引用

 1 Sub Test()
 2 Dim arr(2) As Integer
 3     arr(0) = 1
 4     arr(1) = 2
 5     arr(2) = 3
 6 
 7     showArray arr
 8 Dim i As Integer
 9     For i = 0 To 2
10           Debug.Print arr(i)        '输出101,102,103
11     Next i
12 End Sub
13 
14 Function showArray(arr() As Integer)
15 Dim i As Integer
16     For i = 0 To 2
17        arr(i) = arr(i) + 100
18     Next i
19 End Function

和()有关的一个常见错误和保留问题:

 1 Sub Test()
 2 Dim arr(2) As Integer
 3     arr(0) = 1
 4     arr(1) = 2
 5     arr(2) = 3
 6 
 7     showArray (arr)                 '编译时报错:缺乏数组或用户定义类型
 8 Dim i As Integer
 9     For i = 0 To 2
10           Debug.Print arr(i)
11     Next i
12 End Sub
13 
14 Function showArray(arr() As Integer)
15 Dim i As Integer
16     For i = 0 To 2
17        arr(i) = arr(i) + 100
18     Next i
19 End Function

      编译报错:缺乏数组或用户定义类型,除了()生成了一个临时变量以外,与此有关的缘由暂不明。。       

若是形参是arr而不是arr()

 1 Sub Test()
 2 Dim arr(2) As Integer
 3     arr(0) = 1
 4     arr(1) = 2
 5     arr(2) = 3
 6 
 7     showArray (arr)
 8 Dim i As Integer
 9     For i = 0 To 2
10           Debug.Print arr(i)           '输出1,2,3
11     Next i
12 End Sub
13 
14 Function showArray(arr)
15 Dim sum As Integer, i As Integer
16     For i = 0 To 2
17        arr(i) = arr(i) + 100
18     Next i
19 End Function
相关文章
相关标签/搜索