2014-02-19 7 views
1

나는 여러 클래스들을 가지고있다. 그래도 내 수업의 속성에 액세스 할 수없는 것 같습니다. 내가 할 수있는 일인가요?아이템 컬렉션에서 속성에 액세스하기

Option Explicit 
Private pValue As String 


Public Property Get Value() As String 
    Value = pValue 
End Property 

Public Property Let Value(tempv As String) 
    pValue = tempv 
End Property 

그리고 내 하위 : 여기

내 클래스 clsProj입니다

합계에서
Sub testtt() 

Set cp = New Collection 

cp.Add clsProj, "AAA" 
cp.Add clsProj, "BBB" 

cp("AAA").Value = "OK" 

MsgBox (cp("AAA").Value) 

End Sub 

I 클래스의 모음 clsProj이 그 문자열 I 지수 (이것은 단지 테스트 서브입니다) 이 경우 특정 컬렉션 항목 (예 : AAA)에 대해 clsProj의 속성에 액세스하려고합니다. 여기서 어떤 부분이 잘못 되었습니까? 나는 그것을 얻을 수없는 것 같습니다.

답변

2

클래스는 이해하기가 약간 까다 롭지만 실제로는 유용합니다. 어쩌면이 조금 도움이됩니다

Sub testtt() 

    Dim cp As Collection 
    Set cp = New Collection 

    Dim blabla As clsProj 
    Set blabla = New clsProj 

    Dim blabli As clsProj 
    Set blabli = New clsProj 

    blabla.Value = "OK" 
    blabli.Value = "KO" 

    cp.Add blabla, "AAA" 
    cp.Add blabli, "BBB" 

    MsgBox (cp("AAA").Value) 
    MsgBox (cp("BBB").Value) 

    Set blabla = Nothing 
    Set blabli = Nothing 

End Sub 


편집 :

Sub testtt() 

    Dim cp As Collection 
    Set cp = New Collection 

    Dim blabla As clsProj 
    Dim i As Integer 
    For i = 1 To 10 
     Set blabla = New clsProj 

     '"OK" value + a special character from ASCII table 
     blabla.Value = "OK " & Chr(32 + i) 

     cp.Add blabla, CStr("AAA" & i) 

     Set blabla = Nothing 
    Next i 

    'Test calling collection by key 
    MsgBox cp("AAA5").Value 

    'Test calling collection by item number and print it in 
    '"Immediate" window (ctrl+g to show that window from VBA editor) 
    For i = 1 To cp.Count 
     Debug.Print cp(i).Value 
    Next i 

End Sub 
+1

이 정확히 내가 찾고 있었어요 무엇 : Collection, ClassFor...Next 루프를 혼합! 감사합니다 – user2385809

+0

@ user2385809; 다행스럽게 도울 수있어! For ... Next' 루프를 사용하여 또 하나의 예제를 추가했습니다 :) –

관련 문제