クラス オブジェクトのコレクションを実装しました。オンライン記事からクラス オブジェクトのコレクションを作成する方法について説明を受けましたが、完全には理解できません。私のコレクションは動作します。オブジェクトを Coll に追加し、それらのデータを操作して、他の関数からそれらを使用できます。
記事: http://www.cpearson.com/excel/CollectionClass.aspx
多分それはVBAでのみ役に立ち、VBA Excelでは役に立たないでしょうか? 私はそれでよくつまずきます。
現在、コレクションには 1 種類のオブジェクトしか追加していませんが、さまざまな種類のオブジェクトを追加した方が便利です。ただし、各オブジェクトをループしたときに、それらがどのタイプであるかはわかりません。
2 番目のコレクション CollKeys は何のためのものですか? キーとは Excel VBAでどのように使用されていますか? さまざまな種類のオブジェクトを追加するときに役立ちますか?
' Collection cCRE_Coll
Option Explicit
Private Const msMODULE As String = "cCRE_Coll"
' This is a collection of CRE objects
Private pCount As Long
Private Coll As Collection
Private CollKeys As Collection
Private Sub Class_Initialize()
Set Coll = New Collection
Set CollKeys = New Collection
End Sub
Private Sub Class_Terminate()
Set Coll = Nothing
Set CollKeys = Nothing
End Sub
Public Property Get Count() As Long
pCount = Coll.Count
End Property
これが私がテストした方法ですが、もっと複雑な操作を行う必要があります...
Sub testReadWrite()
Dim collCRE As New Collection
Dim collPE As New Collection
Dim collPP As New Collection
Dim clsCRE As cCRE
Dim clsPE As cPE
Dim clsPP As cPP
Dim i As Long
Dim myWS As Worksheet
Dim lLastRow As Long
Set myWS = ActiveSheet
lLastRow = lFindNewRow(myWS) - 1
' Item count starts at 1
' Test reading in all the different types of row entries
For i = giHEADER_ROW + 1 To lLastRow
If myWS.Cells(i, ColNum.CRE_ID) <> vbNullString Then
' Read in a CRE
Set clsCRE = New cCRE ' Start with a blank clsCRE
Call clsCRE.ReadFromWS(myWS, myWS.Cells(i, ColNum.CRE_ID))
collCRE.Add clsCRE
ElseIf StrComp(myWS.Cells(i, ColNum.PE_CRE_ID), gsPE_SUMMARY_TAG) = 0 Then
' Read in a PE/RCR (not a PP)
Set clsPE = New cPE
Call clsPE.ReadFromWS(myWS, myWS.Cells(i, ColNum.PE_ID))
collPE.Add clsPE
ElseIf StrComp(myWS.Cells(i, ColNum.PE_ID), gsPP_ID) = 0 Then
Set clsPP = New cPP
Call clsPP.ReadFromWS(myWS, i)
collPP.Add clsPP
ElseIf myWS.Cells(i, ColNum.PE_ID) = vbNullString Then
Debug.Print "Cannot Read In Row " & i
End If
Next
' In the middle I will change, sort, add and remove objects.
' Test writing out all of the different types of row entries
For Each clsCRE In collCRE
Call clsCRE.WriteToWS(ThisWorkbook.Sheets("Sheet1"))
Next
For Each clsPE In collPE
Call clsPE.WriteToWS(ThisWorkbook.Sheets("Sheet1"))
Next
For Each clsPP In collPP
Call clsPP.WriteToWS(ThisWorkbook.Sheets("Sheet1"))
Next
End Sub