如何返回自定义对象数组?

时间:2017-11-26 16:05:28

标签: excel vba excel-vba

我正在尝试编写一个返回自定义对象数组的函数。以下是我到目前为止的情况:

Option Explicit

Public Type Node
     mValue As Integer
     mTo() As Integer
End Type

Function FillData()
    Dim a As Node
    Dim b As Node
    Dim c As Node
    Dim nody() As Node

    a.mValue = 1
    ReDim a.mTo(0 To 1)
    a.mTo(0) = 2

    b.mValue = 2
    ReDim b.mTo(0 To 1)
    b.mTo(0) = 3

    c.mValue = 3
    ReDim c.mTo(0 To 1)
    c.mTo(0) = 1

    ReDim nody(0 To 2)
    nody(0) = a
    nody(1) = b
    nody(2) = c

    FillData = nody
End Function

Sub test()
    Dim data() As Node
    data = FillData()
End Sub

问题在于,当我尝试运行它(测试子)时,我在FillData = nody中遇到了一个编译错误:

  

只有公共对象模块中定义的用户定义类型才能被强制转换为变体或从变量强制转移或传递给后期绑定函数

我的整个代码都在公共模块中。我如何'强制'函数返回一组自定义对象?

1 个答案:

答案 0 :(得分:2)

设置函数的返回值。

Option Explicit

Public Type Node
     mValue As Integer
     mTo() As Integer
End Type

Function FillData() As Node()
    Dim a As Node
    Dim b As Node
    Dim c As Node
    Dim nody() As Node

    a.mValue = 1
    ReDim a.mTo(0 To 1)
    a.mTo(0) = 2

    b.mValue = 2
    ReDim b.mTo(0 To 1)
    b.mTo(0) = 3

    c.mValue = 3
    ReDim c.mTo(0 To 1)
    c.mTo(0) = 1

    ReDim nody(0 To 2)
    nody(0) = a
    nody(1) = b
    nody(2) = c

    FillData = nody
End Function

Sub test()
    Dim data() As Node
    data = FillData()
End Sub