2013-12-19 1 views
2

개인 속성 m_Invalid() as String이 포함 된 ClassModule이 있습니다.ClassModule 속성을 사용하여 배열 키 추가

내가 필요한 것은 2x 속성이며, 하나는 공개 액세스가 전체 배열을 가져올 수있게하고, 하나는 개인 액세스가 배열에 키를 추가하도록 허용합니다.

것은 나는이 함께 올라와있다, 그러나 나는 시도하고 AddInvalid (Me.AddInvalid ("Test")를 사용하는 경우 나 컴파일 오류가 얻을 -

아무도 내가 뭘 잘못 알고 있나요 재산의

잘못된 사용자를 ? 덕분에,

Public Property Get Invalid() As String() 
    Invalid = m_Invalid 
End Property 
Public Property Let AddInvalid(ByVal Value As String) 

    Dim ArrayLength As Integer 
    ArrayLength = UBound(m_Invalid) 

    ReDim Preserve m_Invalid(ArrayLength) 

    m_Invalid(ArrayLength) = Value 

End Property 

답변

3

이유는 AddInvalid, 그냥 하위 (또는 기능)로 변경하고 작동? 속성 할 필요가 않습니다 이름은 기존 속성과 동일 할 수 없습니다.

Public Sub AddItem(psTest As String) 

    Dim ArrayLength As Integer 
    ArrayLength = UBound(m_invalid) 

    ReDim Preserve m_invalid(ArrayLength) 

    m_invalid(ArrayLength) = psTest 

End Sub 

또한 사용자 코드는 사용자가 생각한대로 작동하지 않습니다. 내가 볼 수있는 것부터 ReDim이하는 모든 작업은 이미 동일한 크기로 변경 한 다음 마지막 값을 덮어 씁니다 ...? 어레이를 증가 시키려면 ReDim 문에 하나를 추가하십시오.

ReDim Preserve m_invalid(ArrayLength + 1) 
+0

예, +1을 놓쳐 버렸습니다. 메소드로 추가하면 실제로 작동했습니다. –