' Generates all combination possibilities out of a stringPublic Function PermuteString(ByVal Ztring As String, Optional Base As String = _ "") As String Dim TmpStrArray() As String, I As Long ' If there's only 1 element then If InStr(1, Ztring, " ", vbTextCompare) = 0 Then PermuteString = Base & " " & Ztring & vbCrLf Exit Function End If ' If more than 1 element: split elements in one array of elements TmpStrArray = Split(Ztring, " ", , vbTextCompare) If Base = "" Then ' Loop trough each element and do callbacks to permute again For I = LBound(TmpStrArray) To UBound(TmpStrArray) PermuteString = PermuteString & PermuteString(ReturnAllBut _ (TmpStrArray, I), TmpStrArray(I)) Next Else ' Loop trough each element and do callbacks to permute again For I = LBound(TmpStrArray) To UBound(TmpStrArray) PermuteString = PermuteString & " " & PermuteString(ReturnAllBut _ (TmpStrArray, I), Base & " " & TmpStrArray(I)) Next End If End Function' Return all items in a array but 1Public Function ReturnAllBut(ByRef Arrai() As String, But As Long) As String Dim I As Long For I = LBound(Arrai) To UBound(Arrai) If I <> But Then ReturnAllBut = ReturnAllBut & Arrai(I) & " " End If Next ReturnAllBut = RTrim(ReturnAllBut)End Function' Pay a visit to the author's web site at http://www15.brinkster.com/bubux/