No has puesto la declaración de la función f, por lo que jugamos a adivinar....
...parece ser que la función espera una matriz y tu le estás asando una variable que no es una matris...
A ver si lo entiendes mejor con un ejemplo:
Creo una función para hacer una suma como la siguiente...
public function Suma(byval sumando as integer, byval Sumador as integer) as long
Suma= sumando + sumador
end function
Esta función la utilizo así...
Dim Resul as long
Resul= suma(22,37)
' y también así...
Dim x1 as integer, x2 as integer
x1= 144: x2=49
Resul= suma(x1,x2)
Pero claro no siempre vamos a querer sumar 2 números, también podríamos sumar 3 y 4 y 5, ..y lógicamente no vamos a tener una función para cada posibilidad. entonces vb provee 2 soluciones una es usando un parámetro llamado paramarray y otro es usando una matriz. Nos vamos a ceñir en este que es tu caso.
Fíjate en la diferencia que supone la misma función pero aplicando una matriz:
public function Suma(byref Valores() as integer) as long ' nota el paréntesis detrás de valores que denota una matriz y nota como debo pasarlo como 'byref' nunca byval para una matriz, pero esto ya te lo indicaría vb....
Dim k as long, R as long
if (not(valores)) <> -1 then
for k= lbound(valores) to ubound(valores)
R= R + Valores(k)
next
suma = R
else
Call Err.Raise(9, Me.Name, "La matriz no está declarada...")
end if
end function
...luego la función se utiliza así...
Dim Resul As Long
Dim n() As Integer
Redim n(1 to 7)
n(0)=5: n(1)=22: n(2)=567: n(3)=1234: n(4)= -456: n(5)= 96: n(5)=11: n(7)= n(2)*3 ' n(6) vale 0
Resul = Suma(n)
msgbox resul ' nos muestra el resultado de la suma.
Espero que puedas entenderlo...