You can get a function toi return a list, just get rid of "List" bit in your function, so instead of
Function myfunc() List As Variant
...
End Function
...do:
Function myfunc() As Variant
then you can call your function as you already do.
Dim mylist List As Variant
mylist = myfunc()
Lists are great and I use them all the time, but I have found one limitation with lists...
if if have a function like:
Public Function returnMyList() as Variant
Dim myList List as Variant
Dim s_test as String
Dim i as Integer
Dim doc as NotesDocuemnt
Dim anotherList List as String
'// ...set your variables however you like
myList( "Some Text" ) = s_text
myList( "Some Integer" ) = i
myList( "Some Doc" ) = doc
'// If you returned the list here, you're fine, but if you add
'// another list...
anotherList( "one" ) = ""
anotherList( "two" ) = ""
myList( "Another List" ) = anotherList
'// This will cause an error
returnMyList = myList
'// I bodge around this by writting directly to a List
'// that is set as global variable.
End Function