我正在尝试编写一个返回自定义对象数组的函数。以下是我到目前为止的情况:
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
中遇到了一个编译错误:
只有公共对象模块中定义的用户定义类型才能被强制转换为变体或从变量强制转移或传递给后期绑定函数
我的整个代码都在公共模块中。我如何'强制'函数返回一组自定义对象?
答案 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