技術(shù) 點(diǎn)
- 技術(shù)
- 點(diǎn)
- V幣
- 點(diǎn)
- 積分
- 299
|
我們一般會(huì)在下面第二個(gè)容易掉進(jìn)陷井!
Sub testFuns()
Dim lngRet As Long, varLong As Long
varLong = 1
fun1 varLong
Debug.Print varLong
varLong = 1
fun1 (varLong)
Debug.Print varLong
varLong = 1
Call fun1(varLong)
Debug.Print varLong
varLong = 1
Call fun1((varLong))
Debug.Print varLong
varLong = 1
Call fun1(lng:=varLong)
Debug.Print varLong
varLong = 1
Call fun1(lng:=(varLong))
Debug.Print varLong
End Sub
Function fun1(ByRef lng As Long) As Integer
lng = 1000
End Function
輸出得到:
1000
1
1000
1
1000
1
應(yīng)該都看出來了吧,答案:
不管[Sub][Function],如果對(duì)參數(shù)變量加了括號(hào),即使過程參數(shù)是傳址,也會(huì)將參數(shù)作為傳值(參數(shù)復(fù)本傳入過程)
如果還不理解,將fun1改為兩個(gè)參數(shù)(其他稍作修改)再運(yùn)行,你就會(huì)徹底明白
Function fun1(ByRef lng As Long,lng2 As Long) As Integer
lng = 1000
lng2=2000
End Function
|
|