Article ID: 127170
Article Last Modified on 10/7/2003
Sub SortResourceNames()
' This sub does a simple 'bubble sort' on the
' resource names field and places the resulting
' alphabetized list into the task's Text10 field.
Dim tskIndex As Task ' Task object
Dim nNumNames As Integer ' Name counter
Dim sResNames As String ' Name list
Dim sName As String ' Single name
Dim sLS As String ' List separator
Dim asAlpha() As String ' Alphabetized list
Dim i As Integer ' Loop counter
Dim j As Integer ' Loop counter
' Save list separator
sLS = ListSeparator
' Loop through all project tasks
For Each tskIndex In ActiveProject.Tasks
' Ignore blank tasks
If Not (tskIndex Is Nothing) Then
' Clear the Text10 field
tskIndex.Text10 = ""
' Save resource names in variable
sResNames = tskIndex.ResourceNames
' Add list separator for parsing
sResNames = sResNames & sLS
' Initialize counter
nNumNames = 0
' Repeat until all names parsed from list
Do While Len(sResNames) > 1
' Count number of names parsed
nNumNames = nNumNames + 1
' Get next name from list
sName = Left(sResNames, InStr(sResNames, sLS) - 1)
' Resize array to hold new value
ReDim Preserve asAlpha(1 To nNumNames)
' Put name in array
asAlpha(nNumNames) = sName
' Remove name from list
sResNames = Mid(sResNames, Len(sName) + 2)
Loop
End If
' Now sort the list in the array
For i = 1 To nNumNames
For j = 1 To nNumNames - 1
' Compare alphabetically, ignoring case
If LCase(asAlpha(j)) > LCase(asAlpha(j + 1)) Then
' Switch positions
sName = asAlpha(j + 1)
asAlpha(j + 1) = asAlpha(j)
asAlpha(j) = sName
End If
Next j
Next i
' Place sorted list into Text10 field
sResNames = ""
For i = 1 To nNumNames
' If necessary, add list separator
If i > 1 Then sResNames = sResNames & sLS
sResNames = sResNames & asAlpha(i)
Next i
tskIndex.Text10 = sResNames
Next tskIndex
End Sub
sResNames = tskIndex.ResourceInitials
Additional query words: Bubble
Keywords: kbhowto kbmacro kbcode kbusage KB127170