VBA中ByVal和 ByRef有什么區(qū)別?ByVal表示該參數(shù)按值傳遞。 ByRef表示該參數(shù)按地址傳遞,。ByRef 是 Visual Basic 的缺省選項,。 按值:一種將參數(shù)值而不是將地址傳遞給過程的方式,這就使過程訪問到變量的復本,。結果,,過程不可改變變量的真正值。 按地址:一種將參數(shù)地址而不是將值傳遞給過程的方式,,這就使過程訪問到實際的變量,。結果,過程可改變變量的真正值,。除非另作說明,,否則按地址傳遞參數(shù)。 簡明一點說:以ByVal傳遞給過程,,過程里有代碼對這個變量做了更改,,在過程結束返回后這個變量還是調用過程前的值,不會變化,。以ByRef傳遞給過 程,,過程里有代碼對這個變量做了更改,在過程結束返回后這個變量的值就是過程里改成的那個值。 下面舉個例子: (1)ByVal示例 Sub TmpByVal() Dim a As String a = "2" Call FunByVal(a) MsgBox CStr(a) End Sub Function FunByVal(ByVal a) a = "3" End Function (2)ByRef示例 Sub TmpByRef() Dim a As String a = "2" Call FunByRef(a) MsgBox CStr(a) End Sub Function FunByRef(ByRef a) a = "3" End Function 總結:vb(vba)中,,除非你有足夠的理由和有了足夠的準備接受傳址得來的值,,都要使用ByVal來傳值,ByRef意味夢魘的開始,!但不要因為怕 ByRef就不用,,而是要注意出現(xiàn)夢魘時要想到那可能是使用ByRef的結果。 |
|
來自: 昵稱QAb6ICvc > 《vba應用》