2013-07-01 102 views
1

我正在通過ByVal和ByRef through MSDN,其中提到了當我們通過ByVal傳遞參數時,值總是由ByVal傳遞。ByVal指定時,爲什麼總是ByRef?

在我的下面的例子總是通過ByRef。我究竟做錯了什麼?

Function sampleFunction(ByVal val) 'Even though here i am passing as ByVal it is taking as ByRef 
     val=val+1 
     sampleFunction=val 
    End Function 

    x=50 
    temp=sampleFunction(x) 
    msgbox temp 'prints 51 

如何從函數返回時通過ByVal傳遞參數?

+0

你似乎是用一個返回值的概念混淆引用傳遞變量。如果你在'sampleFunction'之後調用'msgbox x',它將打印50。 – dlev

回答

3

您的功能正在接受50的值。然後將變量val遞增1,以便該變量現在爲51。然後,它的返回值設置到val的價值,這是51

因此,您temp變量被分配到的返回值,這是51你x變量,但是,仍然會50,因爲只有值傳遞到函數中 - x參數未被修改。

如果你想在這裏做一個ByRef,然後x本來51

相關問題