Outra definição : Quando você passa um Argumento para uma função com ByVal, é feito uma cópia deste argumento na função, ou seja, se você alterar o valor do argumento na função, isto não ocorrerá fora dela.
Ex:
-----------------------------------------------------
Function Soma(byVal Numero as integer) as Integer
Numero = Numero + 1
Soma = Numero
end Function
Dim N as integer
N = 1
S = Soma(N)
msgbox N
msgbox S
----------------------------------------
A primeira caixa de mensagem vai retornar 1
A segunda caixa de mensagem vai retornar 2