Hi, im really confused and i cant work out why this does this.

VB Code:
  1. Private Sub Form_Load()
  2.     Dim a As Long
  3.     a = 10
  4.     c = f(a)
  5.     MsgBox a
  6. End Sub
  7.  
  8. Private Function f(b As Long) As Long
  9.     b = b + 1
  10. End Function

Can someone please explain why a = 11 after this code is done?
i thought that you had to use ByRef keyword if you wanted to change the original value??
ie
VB Code:
  1. Private Function f(ByRef b as long) as long

How is it possible that 'a' variable changes when all im doing is passing the 'a' value to the function?