Public Sub TestMe() Dim var1 As Long: var1 = 1 Dim var2 As Long: var2 = 1 IncrementByVal (var1) IncrementByRef (var2) Debug.Print var1, var2 End Sub Public Function IncrementByVal(ByVal a As Variant) As Variant a = a + 100 IncrementByVal = a End Function Public Function IncrementByRef(ByRef a As Variant) As Variant a = a + 100 IncrementByRef= a End Function Public Sub TestMe() Dim var1 As Long: var1 = 1 Dim var2 As Long: var2 = 1 Dim var3 As Long: var3 = 1 Dim var4 As Long: var4 = 1 Dim var5 As Long: var5 = 1 Dim var6 As Long: var6 = 1 IncrementByVal (var1) '1 IncrementByRef (var2) '1 IncrementByVal var3 '1 IncrementByRef var4 '101 Call IncrementByVal(var5) '1 Call IncrementByRef(var6) '101 Debug.Print var1, var2 Debug.Print var3, var4 Debug.Print var5, var6 End Sub Public Function IncrementByVal(ByVal a As Variant) As Variant a = a + 100 IncrementByVal = a End Function Public Function IncrementByRef(ByRef a As Variant) As Variant a = a + 100 IncrementByRef = a End Function