Una soluzione potrebbe essere questa. Funziona, ovviamente, solo con
uno specifico array di interi [Interi()], interno alla tua applica-
zione. Quindi nel tuo caso devi cambiare 'Interi' con il nome del
tuo array.

Con un minimo di modifiche si può rendere generica la funzione e
riutilizzarla.

Una soluzione sicuramente più robusta potrebbe essere la codifica
di un oggetto Sorter che accetti sia interi che stringhe.

La parte di visualizzazione è solo per la verifica.

codice:
Dim i As Integer
Dim s As Integer
Dim k As Integer

    ' Carico l'array
    For i = 0 To UBound(Interi) - 1
        Interi(i) = Int(Rnd(15) * 50) + 1
    Next i
    
    ' ---------------------------------------------------------
    ' Visualizzo l'array - Da eliminare
    ' ---------------------------------------------------------
    For i = 0 To UBound(Interi) - 1
        Debug.Print Interi(i),
    Next i
    Debug.Print
    ' ---------------------------------------------------------
    
    ' Ordino l'array utilizzando il metodo Exchanging
    Do
        
        s = 0 ' Azzero il contatore scambi
        
        For i = 0 To UBound(Interi) - 1
            ' Confronto gli elementi a coppie 1-2, 2-3, 3-4 ecc...
            If Interi(i) > Interi(i + 1) Then
                ' Se non sono in sequenza
                ' Scambio il primo valore col successivo
                k = Interi(i + 1)
                Interi(i + 1) = Interi(i)
                Interi(i) = k
                s = s + 1 ' Conto gli scambi
            End If
        Next i
        
        ' Si esce quando non ci sono stati scambi (ordinato)
        If s = 0 Then Exit Do
    
    Loop
    
    ' ---------------------------------------------------------
    ' Visualizzo l'array - Da eliminare
    ' ---------------------------------------------------------
    For i = 0 To UBound(Interi) - 1
        Debug.Print Interi(i),
    Next i
    Debug.Print
    ' ---------------------------------------------------------
Considerazioni sul codice di esempio :
1) Il codice di esempio indica uno dei probabilmente molti metodi di
risoluzione del problema.
2) E' stato provato prima di essere postato.
3) Non sono inclusi tutti i controlli di validità degli argomenti
passati alle funzioni, che andranno comunque inseriti nel codice
dell'applicazione reale.
4) Il codice riflette, se presenti, le premesse stabilite in testa al
messaggio di risposta.
5) Quando è possibile, si propende per una soluzione generalizzata,
per il riutilizzo del codice.
Ciao,