I'm currently working on a project where I want to initialize two different classes. I'm using a collection-class to store the sheets data.
First of all I'd like to iterate through the classes' properties; sadly it doesn't seem to be possible in VBA (without making some hacked solution).
The two functions below are almost the same, with the difference of one property. Can I somehow make a function that is more reusable in VBA?
Private Sub PasteCMSData()
    Dim PipelineCMSData As Collection
    Dim WonCMSData As Collection
    Dim I As Integer: I = 0
    Set PipelineCMSData = CollectPipeline()
    Set WonSheetName = CollectWon()
End Sub
Private Function CollectPipeline() As Collection
Private Function CollectPipeline() As Collection
    Const StartPos As Integer = 2
    Dim I As Integer: I = 0
    Dim PL As cPipeline
    Dim WorkbookData As Worksheet
    Set CollectPipeline = New Collection
    Set WorkbookData = Workbooks(WorkbookName).Worksheets(PLSheetName)
    For I = StartPos To WorkbookData.UsedRange.Rows.Count
        Set PL = New cPipeline
        With PL
            .ProjectType = WorkbookData.Cells(I, PLProjectType)
            .Segment = WorkbookData.Cells(I, PLSegment)
            .Customer = WorkbookData.Cells(I, PLCustomer)
            .Project = WorkbookData.Cells(I, PLProject)
            .Note = WorkbookData.Cells(I, PLNote)
            .CRM = WorkbookData.Cells(I, PLCRM)
            .Probability = WorkbookData.Cells(I, PLProbability)
            .Owner = WorkbookData.Cells(I, PLOwner)
            .SalesPhase = WorkbookData.Cells(I, PLSalesPhase)
            .NREPotential = WorkbookData.Cells(I, PLNREPotential)
            .RoyaltyPotential = WorkbookData.Cells(I, PLRoyaltyPotential)
            .Defcon = WorkbookData.Cells(I, PLDefcon)
            .ProjectStart = WorkbookData.Cells(I, PLProjectStart)
            .ProjectDuration = WorkbookData.Cells(I, PLProjectDuration)
        End With
        CollectPipeline.Add PL
    Next I
End Function
Private Function CollectWon() As Collection
Private Function CollectWon() As Collection
    Const StartPos As Integer = 2
    Dim I As Integer: I = 0
    Dim WO As cWon
    Dim WorkbookData As Worksheet
    Set CollectWon = New Collection
    Set WorkbookData = Workbooks(WorkbookName).Worksheets(WonSheetName)
    For I = StartPos To WorkbookData.UsedRange.Rows.Count
        Set WO = New cWon
        With WO
            .ActualCloseDate = WorkbookData.Cells(I, WOActualCloseDate)
            .ProjectType = WorkbookData.Cells(I, WOProjectType)
            .Segment = WorkbookData.Cells(I, WOSegment)
            .Customer = WorkbookData.Cells(I, WOCustomer)
            .Project = WorkbookData.Cells(I, WOProject)
            .Note = WorkbookData.Cells(I, WONote)
            .CRM = WorkbookData.Cells(I, WOCRM)
            .Probability = WorkbookData.Cells(I, WOProbability)
            .Owner = WorkbookData.Cells(I, WOOwner)
            .SalesPhase = WorkbookData.Cells(I, WOSalesPhase)
            .NREPotential = WorkbookData.Cells(I, WONREPotential)
            .RoyaltyPotential = WorkbookData.Cells(I, WORoyaltyPotential)
            .Defcon = WorkbookData.Cells(I, WODefcon)
            .ProjectStart = WorkbookData.Cells(I, WOProjectStart)
            .ProjectDuration = WorkbookData.Cells(I, WOProjectDuration)
        End With
        CollectWon.Add WO
    Next I
End Function
 
     
     
     
    