【问题标题】:Return an array from function in VBA从VBA中的函数返回一个数组
【发布时间】:2016-06-22 20:56:53
【问题描述】:

我想编写一个接受数组作为参数的函数。然后该函数填充一些元素。最后,函数填充的数组对调用者可见。

sub main1()
    Dim A(1,3) as string
    F(A) '???How to get the value of each array element here?
    ...
End Sub

Function F(X(1,3) as string) string()
    X(1,1)=3.14
End Function

看了下面的帖子,没看懂,莫名问题不一样。

return array from function in VBA

【问题讨论】:

  • 在方法签名 Function Blah(myArray as Variant) as Variant 中使用变体数据类型
  • 如果您仔细阅读了您链接到的问题的答案,您将看到需要调整代码的地方。
  • @Sorceri,正确,将 F(X as VARIANT) 定义为 VARIANT 然后将调用结果分配给 Variant 使数据出现在传递的参数中!!!谢谢你。如果您的评论为答案,我会将其标记为答案。
  • @ScottHoltzman,你可能是对的,我只是看不到它!
  • @NoChance - 毫无疑问,这很棘手:)

标签: excel vba


【解决方案1】:

一种解决方案是只传递数组 ByRef

Sub main1()
    Dim A(1, 3) As String
    Call F(A)
    Debug.Print A(1, 1)
End Sub
Sub F(ByRef x() As String)
    x(1, 1) = 3.14
End Sub

【讨论】:

  • 是的,这非常有效,我可以在不使用变体的情况下使用原始类型。非常好。
  • @NoChance 谢谢。我还稍微修改了我的答案,将 Array 填充器更改为 Sub,而不是 Function,因为它不返回任何值。
  • 这也是正确的,再次感谢。通过Ref发送数据以提高效率是个好主意,但让被调用程序更改它是有害的。无论如何,看起来宇宙已经在没有我的智慧的情况下成功地生存了!
猜你喜欢
  • 2015-10-12
  • 2013-01-24
  • 2021-09-22
  • 2011-06-23
  • 2018-01-25
  • 1970-01-01
  • 2015-12-24
  • 2021-10-01
  • 1970-01-01
相关资源
最近更新 更多