2012-12-10 3 views
2

스토리지에 대한 사용자 정의 클래스에 배열을 전달하고 해당 개체 내에서 계속 사용하려고합니다. 클래스 객체는 다음과 같이 정의되어있다 :동적 배열을 VBA 개체로 전달하는 방법. 컴파일 오류 : 잘못된 속성 사용

' Class Name: MBRMCurves 
Implements ICurves 

Private m_lInterpDates() As Long 

Public Property Get InterpDates() As Long() 

    InterpDates = m_lInterpDates 

End Property 

Public Property Let InterpDates(lInterpDates() As Long) 

    m_lInterpDates = lInterpDates 

End Property 

이 코드를 호출하는 모듈은 다음과 같습니다 재산의 잘못된 사용 : 위의 코드에서 마지막 줄은 나에게 컴파일 오류를주고있다

Dim objResult  As New MBRMCurves 

    'Store the forward prices 
    Dim fx_fwd()  As Double 

    'Store the interpolation dates 
    Dim int_dates() As Long 

    'initially there are no people 
    Dim NumberTenors As Integer 
    NumberTenors = 0 

    Dim cell   As range 

    ' Create ranges of Dates 
    Dim range  As range 
    Dim range_topcell As range 

    ' TODO Pri1 Create the Curves Obj 
    With Worksheets("test") 

     ' Populate the dates of the FWD rates. 
     Set range_topcell = .range("B5") 
Debug.Print range_topcell.Value 
     Set range = .range(range_topcell, range_topcell.End(xlDown)) 
Debug.Print range.Count 

     ' Add more columns to the FWD array 
     ReDim fx_fwd(0 To range.Count - 1, 0 To 3) 
     ReDim int_dates(0 To range.Count - 1) 

     ' Set the counter 
     NumberTenors = 0 

     ' Populate the dates of the FWD rates into the first column of the dates array. 
     For Each cell In range 
      NumberTenors = NumberTenors + 1 
      int_dates(NumberTenors - 1) = cell.Value 
     Next cell 

     ' Add interpolation dates to Curves object 
     objResult.InterpDates int_dates 

.

나는 기능을하자. Let 's syntax가 정확하다고 생각하지만, 미묘한 뉘앙스의 감독을 놓칠지도 모른다.

내가 뭘 잘못하고 있는지 누가 알 수 있습니까? Windows XP에서 Excel 2003 및 VBA 6.5를 사용하고 있습니다.

모든 의견을 크게 기뻐할 것입니다.

감사합니다,

크리스토스

답변

2

속성은 메서드 호출하지 않고 당신은 당신의 배열은 동일하게 설정해야합니다 여전히 배열에 문제가있을 수 있습니다

objResult.InterpDates = int_dates 

당신의 통과하지만 이것은 첫 번째 단계입니다.

+0

꽤 옳습니다. 나는 Java, MAtlab 배경에서 왔고 'getters'와 'setters'에 관한 다른 사전 개념을 가지고있었습니다. 필립에게 감사드립니다. – cmdel