Вызов обычно используется для подпрограмм, а не для функций, но в любом случае нет различий. Однако, когда дело доходит до функций, вы можете получить значение, возвращаемое из функции, а подпрограмма - нет. Пример
result = SomeFunction("param1")
Function SomeFunction(someArg)
SomeFunction = someArg & "Hey There"
End Function
это вернет "param1 Hey There" к значению "result"
result = SomeSub("param1")
Sub SomeSub(someArg)
SomeSub = someArg & "Hey There"
End Sub
но в этом случае «результат» не будет иметь никакого значения, потому что подпрограммы не могут этого сделать.