Sub Bar(x) End Sub Sub Baz(a, b) End Sub Function Foo(y) End Function z = 123 n = Foo(z) ' legal, passes z by reference n = Foo((z)) ' legal, passes z by reference 'n = Foo z ' illegal, parens required Foo z ' legal, passes z by reference Foo(z) ' legal, passes z by value 'Call Foo z ' illegal, parens required Call Foo(z) ' legal, passes z by reference Call Foo((z)) ' legal, passes z by value 'n = Bar(z) ' illegal, bar is not a function Bar z ' legal, passes z by reference Bar(z) ' legal, passes z by value Call Bar(z) ' legal, passes z by reference Call Bar((z)) ' legal, passes z by value Baz z, z ' legal, passes z by reference Baz (z), (z) ' legal, passes z by reference 'Baz(z,z) ' illegal, can't use parens Call Baz(z, z) ' legal, passes z by reference Call Baz((z), (z)) ' legal, passes z by value 'Call Baz z, z ' illegal, parens required This is what we in the programming language business call "a big mess". Unfortunately, we're stuck with it for backwards-compatibility reasons. |