I have investigated this but can't find a way of sorting a Collection. The only way I could do it was to use an array as follows:
Option Explicit
Option Base 1
Sub AssignTasks()
Dim Companies(3) As Class1
Dim CompanyTemp As Class1
Dim i As Integer
Dim j As Integer
'Add as many company to the collection
'Initialise the values
Set Companies(1) = New Class1
Companies(1).Name = " Name A"
Companies(1).Priority = 1
Set Companies(2) = New Class1
Companies(2).Name = " Name B"
Companies(2).Priority = 2
Set Companies(3) = New Class1
Companies(3).Name = " Name C"
Companies(3).Priority = 1
'check current values
For i = 1 To 3
MsgBox Companies(i).Name
MsgBox Companies(i).Priority
Next i
'sort by priority
Set CompanyTemp = New Class1
For i = 1 To UBound(Companies) - 1
For j = i + 1 To UBound(Companies)
If Companies(i).Priority >= Companies(j).Priority Then
CompanyTemp.Priority = Companies(j).Priority
CompanyTemp.Name = Companies(j).Name
Companies(j).Priority = Companies(i).Priority
Companies(j).Name = Companies(i).Name
Companies(i).Priority = CompanyTemp.Priority
Companies(i).Name = CompanyTemp.Name
End If
Next j
Next i
'check sort has worked properly
For i = 1 To 3
MsgBox Companies(i).Name
MsgBox Companies(i).Priority
Next i
End Sub
with the following code in the Class module:
Private strName As String
Private intPriority As Integer
Public Property Get Name() As String
Name = strName
End Property
Public Property Let Name(Value As String)
strName = Value
End Property
Public Property Get Priority() As Integer
Priority = intPriority
End Property
Public Property Let Priority(Value As Integer)
intPriority = Value
End Property
!--removed tag-->
Enter your message below
Sign in or Join us (it's free).