从子例程返回数组给出:编译错误:无法分配给数组



我的目标是从子例程返回数组。我一直在遵循这个教程。下面是我的代码:

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

最新更新