Hi C.
Don't call it an argument, In basic its just call it a parameter functions and proc use parameters. We're NOT doing C here. Functions return a parameter.
That said.. ByVal just mean pass the variable "as is". By value is a copy of the variable you need to work on.
to speed things up you can just pass a parameter by reference. I don't know how deep Vladimir went, never checked, but by a reference is basically a pointer to the variable in memory, so its always an address size.
The trouble here is you are working on that memory location. Care must be taken as you can accidentally do stuff to variables close to it. Like a string for example. by val copies the string, but by ref just passes the position of the first char in the string.. If you write to that string in the function and write too many times you will destroy the values of other variables outside that string. Its not dire, but can cause headaches...