将数组传递给子函数或函数时,ByRef参数类型不匹配

时间:2019-03-06 15:27:33

标签: arrays excel vba string byref

我正在为一个小项目工作。我要做的就是在Sub1中创建一个数组并调用一个函数,将该数组传递给该函数,然后让它填充该数组。

非常简化,它看起来像这样:

Private Sub whatever()
  Dim arr(10, 2) As String
  workArray arr
End Sub

Sub workArray(ByRef arr As String)
  '- do stuff here
End Sub

我在Google上搜索了很多东西,只是无法弄清楚我在做什么错。我也尝试过:

  • 致电workArray(arr)
  • 致电workArray arr
  • workArray(arr)
  • workArray arr

我读到我只能传递一个数组ByRef,所以我确定应该没问题。数组arr的类型为String,该函数期望的数组声明为String-也应该正确。我总是得到“ ByRef参数类型不匹配”。可能是String类型的问题吗?字符串数组的行为是否有所不同?

这里有足够的人释放我的痛苦吗?

1 个答案:

答案 0 :(得分:0)

您在函数中缺少(),在将变量传递到其他地方时,数组需要在变量后的(),因此VBA会将其视为数组

Private Sub whatever()
  Dim arr(10, 2) As String
  workArray arr
End Sub

Sub workArray(ByRef arr() As String)
  '- do stuff here
End Sub

编辑

我四处张望cperson,在将数组传递给函数并再次传递给您时,它具有出色的深度指导。如有疑问,请检查cperson。他有很多有关VBA的有用的东西