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

ByRef Argumenttype mismatch when passing an array to a sub or function

我正在做一个小项目。我想要做的就是在 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

我在谷歌上搜索了很多,就是不知道我做错了什么。我也试过:

我读到我只能传递数组 ByRef,所以我确信这应该没问题。数组 arr 是字符串类型,函数期望的数组被声明为字符串——这也应该没问题。我总是得到 "ByRef argument type mismatch"。问题可能出在 String 的类型上吗?字符串数组的行为是否不同?

这里有好心人可以帮我解除痛苦吗?

您在函数中缺少 (),数组在将变量传递到其他地方时需要在变量之后添加 (),因此 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

的有用资料