vba 傳遞參數(shù)值時,,分為Byval 和Byref 參數(shù)分為形參和實(shí)參:形參指的是過程名稱中用括號括起來的參數(shù),,實(shí)參指的的是調(diào)用過程中,向過程傳遞的數(shù)據(jù)參數(shù),。可以理解為:形參相當(dāng)于公式中的自變量,,實(shí)參相當(dāng)于使用公式時代入自變量中的具體數(shù)值。 Byref,,地址傳遞參數(shù),,傳遞的是地址,過程操作的是變量的地址; Byval,,值傳遞參數(shù),,將變量的內(nèi)容復(fù)制了一遍,過程操作的是另外一個變量,,只不過這兩個變量名稱一樣,,值一樣 Vba中,參數(shù)傳遞的默認(rèn)方式是Byref,,因?yàn)楸举|(zhì)想法是對于相同命名的參數(shù),,在系統(tǒng)中采用同一個數(shù)值。
其中,,call BBB(A,,B)后,A=2,,B=3 call AAA(A,,B)后,A=1,,B=2 值傳遞,,相當(dāng)于傳的是一個副本,對于副本的操作不影響正本;地址傳遞,,相當(dāng)于是一個共有變量,,傳的是地址,該變量可以在過程中改變,。 所以,,聯(lián)合編寫程序時,我不希望自己的函數(shù)值受到別人的影響,,通常會設(shè)定要按值傳遞,,值傳遞只是將變量的內(nèi)容復(fù)制一份而已,,函數(shù)進(jìn)行操作的其實(shí)是另一個變量,只是另一個變量的值和傳遞的變量值是相同的,。而地址傳遞是直接把變量的地址傳遞給函數(shù),,這時函數(shù)是直接對原來的變量進(jìn)行操作的。所以值會變化,。 舉例說吧:值傳遞就相當(dāng)于克隆了一個同樣的變量,,操作的是克隆出來的那個,原來的變量沒有變化,,但是地址傳遞是直接對原來的變量進(jìn)行操作,,沒有克隆新的變量。,。,。懂了吧,,,,, 也可以這樣理解:比如要考試了,你有一份復(fù)習(xí)題,,值傳遞就相當(dāng)于別人借你的試卷去復(fù)印,,然后在復(fù)印的那份上面做筆記,而地址傳遞就是別人直接在你原有的試卷上做筆記,,沒有復(fù)印,,所以等你拿回來你會發(fā)現(xiàn)自己的試卷亂七八糟的,,,,這下應(yīng)該懂了哦,。,。。 |
|