Newsgroup: it.comp.appl.access
Titolo: Ordinamento di array partendo da valori intermedi

Salve, avrei una richiesta un pò OT ma spero di ottenere clemenza e
sopratutto validi consigli!!
in vba avrei da ordinare un array di nomi partendo da un nome
intermedio, faccio un esempio:
BIANCHI
GIALLI
NERI
ROSSI
VERDI
così è ordinato per nome partendo da BIANCHI
a me servirebbe per esempio partire da NERI e ottenere una lista
fatta così
NERI
ROSSI
VERDI
BIANCHI 
GIALLI
Se qualcuno avesse già previsto o fatto una cosa del genere sarebbe
interessante.
Ringrazio e saluto
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 intermedio, faccio un esempio:
[...]
È venuto un po' lunghetto...
======================================
Private Sub Command19_Click()
Dim SourceNameArray() As String, NumName As Integer, j As Integer
Dim FirstNameArray() As String, SecondNameArray() As String
Dim StartName As String, i As Integer, TargetNameArray() As String
Dim ShellSortArray, ASC As Boolean, FlagStampa As Boolean
Dim Temp, Done As Boolean
Dim Gap As Integer, Max As Integer, n As Integer
' Definizioni
' ------------------------------------
NumName = 10            ' Numero nomi
StartName = "Daniele"   ' Nome iniziale
ASC = True              ' Ordinamento ascendente:  True | False
FlagStampa = True       ' Stampa in Immediate Window:  True | False
ReDim SourceNameArray(1 To NumName)
SourceNameArray(1) = "Bruno"
SourceNameArray(2) = "Giovanni"
SourceNameArray(3) = "Redo"
SourceNameArray(4) = "Vanessa"
SourceNameArray(5) = "Genoveffa"
SourceNameArray(6) = "Carlo"
SourceNameArray(7) = "Mario"
SourceNameArray(8) = "Viola"
SourceNameArray(9) = "Daniele"
SourceNameArray(10) = "Alberto"
' -------------------------------------
For i = 1 To UBound(SourceNameArray)
    If SourceNameArray(i) >= StartName Then
        j = j + 1
        ReDim Preserve FirstNameArray(1 To j)
        FirstNameArray(j) = SourceNameArray(i)
    End If
Next
j = 0
For i = 1 To UBound(SourceNameArray)
    If SourceNameArray(i) < StartName Then
        j = j + 1
        ReDim Preserve SecondNameArray(1 To j)
        SecondNameArray(j) = SourceNameArray(i)
    End If
Next
    ShellSortArray = FirstNameArray
    GoSub ShellSort
    ShellSortArray = SecondNameArray
    GoSub ShellSort
Exit Sub
ShellSort:
' --------
n = UBound(ShellSortArray)
Max = n
Gap = Max / 2
Do While Gap >= 1
    Do
        Done = True
        For i = 1 To Max - Gap
            If ASC Then
                If ShellSortArray(i) > ShellSortArray(i + Gap) Then
                    Temp = ShellSortArray(i)
                    ShellSortArray(i) = ShellSortArray(i + Gap)
                    ShellSortArray(i + Gap) = Temp
                    Done = False
                End If
            Else
                If ShellSortArray(i) < ShellSortArray(i + Gap) Then
                    Temp = ShellSortArray(i)
                    ShellSortArray(i) = ShellSortArray(i + Gap)
                    ShellSortArray(i + Gap) = Temp
                    Done = False
                End If
            End If
        Next
    Loop While Not Done
    Gap = Int(Gap / 2)
Loop
If FlagStampa Then
    For i = 1 To n
        Debug.Print i, ShellSortArray(i)
    Next
End If
Return
End Sub
========================================
Ciao
Bruno