|
解説ありがとうございます
"一番大きな違い" は、文言として理解できます・・・
折角コードをアップ頂いていますが頭が固くて (T_T)
お手数ですが下記が理解できないと前に進めそうもありません
'F_ByValS:6 元値でなく加工値はなぜ??
アドバイス頂けるとうれしいです よろしくお願い致します
Sub ByRef_ByVal()
Dim str As String
str = "Ref"
S_ByRef str
Debug.Print "S_ByRef:" & str 'S_ByRef:123 '参照渡し(ByRef) 加工値
Debug.Print
str = "Val"
S_ByVal str
Debug.Print "S_ByVal:" & str 'S_ByVal:Val '値渡し(ByVal) 元値
Debug.Print
Debug.Print "F_ByRefS:" & F_ByRef(2) 'F_ByRefS:4 加工値
Debug.Print
Debug.Print "F_ByValS:" & F_ByVal(2) 'F_ByValS:6 元値でなく加工値はなぜ??
End Sub
Sub S_ByRef(ByRef arg1 As String) '参照渡し(ByRef)
Debug.Print "S_ByRef_S:" & arg1 'S_ByRef_S:Ref
arg1 = "123"
Debug.Print "S_ByRef_E:" & arg1 'S_ByRef_E:123
Debug.Print
End Sub
Sub S_ByVal(ByVal arg1 As String) '値渡し(ByVal)
Debug.Print "S_ByVal_S:" & arg1 'S_ByVal_S:Val
arg1 = "123"
Debug.Print "S_ByVal_E:" & arg1 'S_ByVal_E:123
Debug.Print
End Sub
Function F_ByRef(ByRef arg1 As Integer) '参照渡し(ByRef)
F_ByRef = arg1 * 2
Debug.Print "F_ByRefF:" & F_ByRef 'F_ByRef:4
Debug.Print
End Function
Function F_ByVal(ByVal arg1 As Integer) '値渡し(ByVal)
F_ByVal = arg1 * 3
Debug.Print "F_ByValF:" & F_ByVal 'F_ByValF:6
Debug.Print
End Function
|
|