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