2014-02-19 101 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我的索引使用字符串(這只是一個測試子)我想在這種情況下訪問給定集合項目ex: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 


編輯:混合CollectionClassFor...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

這正是我一直在尋找這樣做!謝謝 – user2385809

+0

@ user2385809;很高興我能幫上忙!我使用'For ... Next'循環添加了一個例子:) –

相關問題