UDFs, Arguments and Passing Back Array

To pass arguments to a user defined function, you put them in parenthesis, right?

Sub My_Code
     My_Function(arg 1, arg 2)
End Sub

For a function that passes back an array, you call the function and specify what part of the array you want passed back by using parenthesis, right?

Sub My_Code
     theVariable = My_Function(1)
End Sub

So what about a function that accepts multiple arguments and passes back an array? They both go in the parenthesis? It doesn’t make sense.

Sub My_Code
     theVariable = My_Function(arg1, arg2, returnarray(1))
End Sub

How has this confusion never come up before?

Welcome!
For the three examples of procedure My_Code(), the code is quite clear.
And what does the code for My_Function() look like? Kindly add this fragment to your question.

Consider the obvious

    ' func(args) gives array, and array(index) accesses element
    theVariable = My_Function(arg1, arg2)(1)