ByRef not passing address

  • Thread starter Thread starter Ian Stanborough
  • Start date Start date
I

Ian Stanborough

Hope some one can help

My problem is when I try to create a function that will increment an
integer, the calling parameter I believe is passed as a value and not a
reference. The help file suggest that default value of parameters passed is
ByRef, but this example tell me in the case of integer its not.

Does any one have a work around.

My email address is (e-mail address removed)
All suggests are welcomed. A coded example would explain all


Program
dim myValue as integer
.....
myValue = 0
increment(myValue)
' here myValue still has value of 0, because it was not passed to
subroutine as reference and hence not incremented
....
end Program



sub increment( number as integer)
number = number + 1
end sub
 
This shows passing by ref is in affect:

Sub One()
Dim X As Integer
Two X
MsgBox X
End Sub

Sub Two(Y As Integer)
Y = Y + 1
End Sub
 
Ian,

ByRef is indeed the default method of passing parameters, but when you
enclose the parameter in parentheses in the call to the procedure, you are
forcing it to be passed ByVal.

Change
increment(myValue)
to
increment myValue


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com (e-mail address removed)
 
Ian,
Your causing the problem yourself by incorrectly calling the function.

increment(myValue)

shoud be

increment myValue

You only use parentheses if you are returning a value (calling a function)
or you are using Call

Call Increment(myValue)
 
Back
Top