會員登錄 - 用戶注冊 - 網(wǎng)站地圖 Office中國(office-cn.net),專業(yè)Office論壇
當(dāng)前位置:主頁 > 技巧 > Access技巧 > 模塊函數(shù)VBA > 正文

Access vba中參數(shù)前關(guān)鍵字ByRef和ByVal的詳細解釋

時間:2013-10-18 15:05 來源:office中國 作者:江羽 閱讀:

    在公用過程或是自定義函數(shù)中,我們經(jīng)常會在定義的參數(shù)前,看到關(guān)鍵字 ByRef 或 ByVal ,它們起什么作用呢?它們又有什么區(qū)別呢?我們先看一段代碼。
 
過程實例代碼:
Sub CallByRef(ByRef Y as Integer )  ‘代碼中Y 及為輸入的參數(shù)
    Y = 2
End Sub
 
    當(dāng)我們調(diào)用這個過程時,可以用兩種方式來傳送參數(shù),即:傳址方式(也稱:引用方式)和傳值方式。如果以傳址方式傳送,加入關(guān)鍵字ByRef ;如果以傳值方式傳送,則加上關(guān)鍵字ByVal。
 
    ByRef 表示該參數(shù)按地址傳遞。 ByRef 是 Visual Basic 的缺省選項。直白的說這傳遞方式所傳遞的是參數(shù)的地址,因此當(dāng)兩個變量指向同一個內(nèi)存地址時,其中一個變量改變,別一個變量也會隨之變化。
見如下實例:
'**************************************
'用“傳址”方式傳遞參數(shù)
'************************************** 
Private Sub Command0_Click()
  Dim X As Integer
  X = 1
  MsgBox "調(diào)用程序之前X值是:" & X
  Call CallByRef(X)
  MsgBox "調(diào)用程序之后X值是:" & X
End Sub
'默認方式是傳址方式傳遞參數(shù),可以不加 ByRef 關(guān)鍵字
Sub CallByRef(ByRef Y As Integer)
    Y = Text2
End Sub
 
   
 
       ByVal 表示該參數(shù)按值傳遞,可選。如果不希望調(diào)用的程序修改原調(diào)用端的變量值,可以加入該關(guān)鍵字,這保證了該變量有自己獨立內(nèi)存區(qū)域或者說空間,而不會受到調(diào)用端變量的影響。只會把傳遞的變量值重新復(fù)制一份給調(diào)用的程序,所以即使在程序內(nèi)變更參數(shù)的值,也不會改變原調(diào)用端的參數(shù)值。
 
見如下實例:
 '**************************************
'用“傳值”方式傳遞參數(shù)
'**************************************
Private Sub Command1_Click()
  Dim X As Integer
  X = 1
  MsgBox "調(diào)用程序之前X值是:" & X
  Call CallByVal(X)
  MsgBox "調(diào)用程序之后X值是:" & X
End Sub
'以傳值方式傳遞參數(shù),必須加上 ByVal 關(guān)鍵字
Sub CallByVal(ByVal Y As Integer)
    Y = Text2
End Sub

-----------------------------------------------------------------------------------------------------------------

(責(zé)任編輯:admin)

頂一下
(3)
100%
踩一下
(0)
0%
發(fā)表評論
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
評價: