Option Explicit
Private Type aPlayer
PlayerID As String
Firstname As String
Lastname As String
Weight As Double
End Type
Private TestData(4) As aPlayer
Private Sub Form_Load()
Dim temp As aPlayer
Dim bIsChange As Boolean
Dim intIndex As Integer
TestData(0).PlayerID = "a"
TestData(0).Firstname = "Martin"
TestData(0).Lastname = "Liss"
TestData(0).Weight = 142
TestData(1).PlayerID = "b"
TestData(1).Firstname = "John"
TestData(1).Lastname = "Weakling"
TestData(1).Weight = 98
TestData(2).PlayerID = "c"
TestData(2).Firstname = "Tiny"
TestData(2).Lastname = "Jones"
TestData(2).Weight = 305
TestData(3).PlayerID = "d"
TestData(3).Firstname = "Steve"
TestData(3).Lastname = "Stunning"
TestData(3).Weight = 205
TestData(4).PlayerID = "e"
TestData(4).Firstname = "Grace"
TestData(4).Lastname = "Slick"
TestData(4).Weight = 180
bIsChange = True
Do Until bIsChange = False
bIsChange = False
For intIndex = 0 To UBound(TestData) - 1
If TestData(intIndex).Weight > TestData(intIndex + 1).Weight Then
bIsChange = True
' Swap the data
temp.Firstname = TestData(intIndex).Firstname
temp.Lastname = TestData(intIndex).Lastname
temp.PlayerID = TestData(intIndex).PlayerID
temp.Weight = TestData(intIndex).Weight
TestData(intIndex).Firstname = TestData(intIndex + 1).Firstname
TestData(intIndex).Lastname = TestData(intIndex + 1).Lastname
TestData(intIndex).PlayerID = TestData(intIndex + 1).PlayerID
TestData(intIndex).Weight = TestData(intIndex + 1).Weight
TestData(intIndex + 1).Firstname = temp.Firstname
TestData(intIndex + 1).Lastname = temp.Lastname
TestData(intIndex + 1).PlayerID = temp.PlayerID
TestData(intIndex + 1).Weight = temp.Weight
End If
Next
Loop
For intIndex = 0 To UBound(TestData)
Debug.Print _
TestData(intIndex).PlayerID & " " & _
TestData(intIndex).Firstname & " " & _
TestData(intIndex).Lastname & " " & _
TestData(intIndex).Weight
Next
End Sub