2014-02-19 2 views
1

У меня есть коллекция классов. Однако, похоже, я не могу получить доступ к свойствам своего класса. Это что-то я могу сделать?Доступ к свойствам в коллекции предметов

Вот мой класс clsProj:

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 

И мой суб:

Sub testtt() 

Set cp = New Collection 

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

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

MsgBox (cp("AAA").Value) 

End Sub 

В сумме у меня есть набор классов clsProj, что индекс I со строками (это просто тест суб) и я хочу получить доступ к свойствам clsProj для данного элемента коллекции ex: AAA в этом случае. Какая часть здесь не так? Я просто не могу понять.

ответ

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 


EDIT: смешивание Collection, Class и For...Next цикл:

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

Это именно то, что я искал, чтобы сделать! Thanks – user2385809

+0

@ user2385809; Рад, что смог помочь! Я добавил еще один пример, используя цикл «For ... Next» :) –

Смежные вопросы