2017-11-26 1 views
4

사용자 지정 개체의 배열을 반환하는 함수를 작성하려고합니다.사용자 정의 객체의 배열을 반환하는 방법은 무엇입니까?

에만 사용자 정의 형식 :

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

클래스 모듈 –

+0

을 사용하십시오. 다음은 클래스 및 컬렉션을 사용하는 예제입니다. https://stackoverflow.com/questions/46049798/compile-error-only-user-defined-types-defined-in-public-object-modules-can-be-c – QHarr

답변

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 
관련 문제