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
相關文章
相關標籤/搜索