Может ли функция вернуть массив?
Конечно.
Public Function Foo(ByVal bar as string) as String() ` return an array End Function
Да. [Слишком коротко, но на самом деле ... что еще можно сказать?]