又是美好的一天,我們繼續(xù)前行,,上次課我們學(xué)習(xí)了過程的基礎(chǔ)知識(shí),,形參與實(shí)參,今天我們來學(xué)習(xí)過程基礎(chǔ)之地址傳遞和值傳遞,。 1,、地址傳遞 按地址傳遞參數(shù)就是將實(shí)參的地址給相應(yīng)的實(shí)參,就好像你把自己家的地址給了人家,,人家就可以隨便找到你家,,然后改變你家里的物品(或添置或拿走),此時(shí)形式參數(shù)與實(shí)際參數(shù)使用相同的內(nèi)存地址單元,,這樣通過調(diào)用被調(diào)程序可以改變實(shí)參的值,。系統(tǒng)缺省參數(shù)傳遞方式是按地址傳遞。有兩種格式: (1),、Sub 過程名(ByRef i%, ByRef sr$) (2),、Sub 過程名(i%,sr$) 還記得上節(jié)課的例子嘛:
運(yùn)行過程“實(shí)參示例”,得到如下結(jié)果:
為什么結(jié)果的i和sr的結(jié)果變化了,?現(xiàn)在我們知道了“形參示例”中的參數(shù)是地址傳遞的,,在被調(diào)用之后它把i和sr的原始值給改變了。如果我們寫成這樣:Sub形參示例(ByRef i%, ByRef sr$),,得到的結(jié)果也是一樣的,。
值傳遞是指形參在接受實(shí)參時(shí),,接受的是實(shí)參的實(shí)際值,,而非實(shí)參的地址,實(shí)參是不受任何影響的,,如果過程定義形參時(shí)使用了ByVal關(guān)鍵字,,此時(shí)實(shí)參與形參之間就是值傳遞方式。語法格式如下: Sub 過程名(ByVal i%, ByVal sr$) 示例: 結(jié)果: 看,,在這段代碼中,,雖然“形參示例”被調(diào)用了,但由于它是值傳遞方式,,故無論怎么折騰,,它都不會(huì)對(duì)i和sr任何影響! 那么VBA為什么要有這么樣的功能呢,?直接統(tǒng)一按照值傳遞,,互不影響不就好了,還這么麻煩,,這是一位網(wǎng)友問我的,。我只能說,,蘿卜青菜,各有所愛,,有的程序需要這樣或那樣的傳遞方式,。我們還是默默接受吧~ |
|