This is what I've come up with:
Private cName As String
Private cWorkDay(1 To 10000) As Date
Private cJobDay(1 To 10000) As Integer
Private cWorkingDays As Integer
Public Property Get Name() As String
Name = cName
End Property
Public Property Let Name(Value As String)
cName = Value
End Property
Public Property Get WorkDay(Index As Long) As Date
WorkDay = cWorkDay(Index)
End Property
Public Property Let WorkDay(Index As Long, Value As Date)
cJobDay(Index) = Value
End Property
Public Property Get JobDay(Index As Long) As Integer
WorkDay = cWorkDay(Index)
End Property
Public Property Let JobDay(Index As Long, Value As Integer)
cJobDay(Index) = Value
End Property
Public Property Get WorkingDays() As String
WorkingDays = cWorkingDays
End Property
Public Property Let WorkingDays(Value As String)
cWorkingDays = Value
End Property
Dim Sweep As Long
Dim Engineers As Collection
Dim Engineer As cFranchise
Set Engineers = New Collection
Dim Dsweep As Long
For Sweep = 6 To 14
Set Engineer = New cFranchise
Engineers.Add Engineer
Engineer.Name = Cells(Sweep, 5).Value
Next Sweep
For Sweep = 2 To Range("JobData!A1048000").End(xlUp).Row
For Each Engineer In Engineers
If Engineer.Name = Range("JobData!BB" & Sweep).Value Then
If Engineer.WorkingDays < 1 Then
Engineer.WorkingDays = 1
Engineer.WorkDay(1) = Range("JobData!X" & Sweep).Value
Engineer.JobDay(1) = 1
Else
For Dsweep = 1 To Engineer.WorkingDays
If Engineer.WorkDay(Dsweep) = Range("JobData!X" & Sweep).Value Then
Engineer.JobDay(Dsweep) = Engineer.JobDay(Dsweep) + 1
Exit For
End If
If Dsweep = Engineer.WorkingDays Then
Engineer.WorkingDays = Engineer.WorkingDays + 1
Engineer.WorkDay(Dsweep) = Range("JobData!X" & Sweep).Value
Engineer.JobDay(Dsweep) = 1
End If
Next Dsweep
End If
Exit For
End If
Next Engineer
Next Sweep
However, I'm getting an overflow error trying to add the very first value here:
Engineer.WorkDay(1) = Range("JobData!X" & Sweep).Value
Bookmarks