Salve a tutti, mi ritrovo a scrivere su questo forum per un problema, dopo che sono passato da Java a VB6 per esigenze varie

il mio problema è questo

popolo una matrice varAppoggio(x,y) con vari elementi. Al momento di cambiare questa varAppoggio nella matrice che a me serve, controllo l'ordinamento che è stato impostato dal software che quindi può essere ordinata:
- per Farmaco desc
- per DataInizio desc
- per Farmaco desc, DataInizio desc

i dati in varAppoggio sono presi dalla classe che gestisce questa funzionalità, che non posso modificare e che li ordina in base a Farmaco asc, DataInizio asc

quindi quando vado a riempire la mia matrice finale e non sono satti modificati gli ordinamenti basta fare varMatrice(x,y) = varAppoggio(x,y)

il problema sorge quando devo ordinarli in base a ciò che ho detto prima
il codice che ho scritto fino ad ora è:


codice:
            
ReDim varMatrice(intI - 1, 6)             
For intk = 0 To intI - 1                
   For intJ = 0 To 6                   
      If TipoTerapia = "intra" Then                     
         RicercaOrdinamento = InStr(1, strOrdinamento, "Farmaco desc",vbTextCompare)
         If RicercaOrdinamento > 0 Then                       
            RicercaOrdinamento = InStr(1, strOrdinamento, "[Data Inizio] desc",vbTextCompare)
            If RicercaOrdinamento > 0 Then                         
               'Impostare VarMatrice con sort Farmaco desc e DataInizio desc
            Else                         
               'Impostare VarMAtrice con il sort Farmaco desc                       
            End If                     
         Else                       
            RicercaOrdinamento = InStr(1, strOrdinamento, "[Data Inizio] desc", vbTextCompare)
            If RicercaOrdinamento > 0 Then                        
               'Impostare VarMAtrice con il sort DataInizio desc                       
            Else                         
               varMatrice(intk, intJ) = varAppoggio(intJ, intk)                         
               DoEvents                       
            End If                     
         End If                   
      Else                   
         varMatrice(intk, intJ) = varAppoggio(intJ, intk)                   
         DoEvents                   
      End If                  
   Next             
Next
ovviamente come si vede dal codice tutto ciò lo fa se TipoTerapia = "intra" ma è una cosa esterna al mio problema (perchè, almeno una volta, lì dentro entra per forza)
qualcuno di voi ha idea di come fare?

PS oltre la prima riga della matrice, in cui sono memorizzati i titoli delle colonne (e quindi esterni ad eventuali controlli), Farmaco e DataInizio sono registrati nella prima e nella seconda colonna