我的目标是从子例程返回数组。我一直在遵循这个教程。下面是我的代码:
Function FuncReturnArray() As String
Dim Films(1 To 5) As String
Films(1) = "Lord of the Rings"
Films(2) = "Speed"
Films(3) = "Star Wars"
Films(4) = "The Godfather"
Films(5) = "Pulp Fiction"
FuncReturnArray = Films
End Function
Sub SubReturnArray()
Dim Films() As String
Films = FuncReturnArray()
MsgBox Films(4)
End Sub
Compile error: Can't assign to array
和编辑器指向以下行:Films = FuncReturnArray()
我做错了什么?
这么接近-你真的会为这个责备自己:
Function FuncReturnArray() As String()
Dim Films(1 To 5) As String
Films(1) = "Lord of the Rings"
Films(2) = "Speed"
Films(3) = "Star Wars"
Films(4) = "The Godfather"
Films(5) = "Pulp Fiction"
FuncReturnArray = Films
End Function
Sub SubReturnArray()
Dim Films() As String
Films = FuncReturnArray()
MsgBox Films(4)
End Sub
注意上面代码的最上面一行- "String"后面需要跟"()"来表明FuncReturnArray是一个数组。你可能认为"FuncReturnArray"后面的括号是这样做的,但实际上在那个上下文中,它们是用来引用一个事实,即没有参数传递给函数。
让你的函数成为一个变体类型。
Function FuncReturnArray() As Variant