【问题标题】:ByRef Argumenttype mismatch when passing an array to a sub or function将数组传递给子或函数时 ByRef 参数类型不匹配
【发布时间】:2019-07-28 07:50:51
【问题描述】:

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

我用谷歌搜索了很多,只是无法弄清楚我做错了什么。我也试过:

  • 调用workArray(arr)
  • 调用workArray arr
  • workArray(arr)
  • workArray arr

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

这里有没有人好心让我摆脱痛苦?

【问题讨论】:

标签: arrays excel vba string byref


【解决方案1】:

您在函数中缺少(),当将变量传递到其他地方时,数组需要(),以便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 的有用资料

【讨论】:

  • 伯恩斯先生您好,非常感谢您的回答!现在我得到错误代码 13 - 类型不匹配。而且我编辑了我的帖子,也许我的错误在其他地方?
  • @McMuellermilch 你现在有一个新问题,我推荐一个新问题。 SO 是帮助所有人,无论是现在还是未来。现在查看您的问题时,我的回答现在无效。我建议将您的问题回滚到原来的样子,如果我的回答解决了该问题,请将其标记为已接受,然后针对您的新问题提出新问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
相关资源
最近更新 更多