Come ordinare un array in vba?

Per ordinare un array in VBA, è necessario scrivere un codice in cui è possibile abbinare il primo elemento dell’array con quello successivo e scambiarli se il primo dovesse precedere. È necessario un ciclo FOR (For Next) per questo e la funzione UCASE .

In questo tutorial vedremo i due modi (AZ e ZA) di ordinare gli elementi di un array.

Ordina un array (AZ)

Nel codice seguente, hai un array con cinque elementi e questi elementi hanno valori che vanno da E ad A, e ora dobbiamo ordinarli in ordine dalla A alla Z.

sort-an-array-1

Passaggi per ordinare un array

  1. Innanzitutto, devi scrivere un ciclo annidato con For Next utilizzando i limiti superiore e inferiore dell’array.
  2. Successivamente, in questo ciclo, è necessario utilizzare l’istruzione VBA IF per confrontare i due elementi.
  3. Da lì, se il primo elemento dovesse precedere l’elemento successivo, è necessario scambiarli salvando i loro valori in variabili.
  4. Alla fine, usa la parola chiave “Avanti” per completare il ciclo.
 Option Base 1 Sub vba_sort_array_a_to_z() Dim myArray() As Variant ReDim myArray(5) Dim i As Integer Dim j As Integer Dim Temp As String myArray(1) = "E" myArray(2) = "D" myArray(3) = "C" myArray(4) = "B" myArray(5) = "A" 'sorting array from A to Z For i = LBound(myArray) To UBound(myArray) For j = i + 1 To UBound(myArray) If UCase(myArray(i)) > UCase(myArray(j)) Then Temp = myArray(j) myArray(j) = myArray(i) myArray(i) = Temp End If Next j Next i Debug.Print myArray(1) Debug.Print myArray(2) Debug.Print myArray(3) Debug.Print myArray(4) Debug.Print myArray(5) End Sub

Assicurati di attivare la finestra Immediata per vedere i risultati lì.

Ordina un array (ZA)

Allo stesso modo, puoi ordinare per ZA. Nel metodo precedente abbiamo confrontato il primo elemento con l’elemento successivo nella sequenza, ma in questo codice devi fare il contrario. Quindi se il secondo elemento (successivo in ordine) è maggiore del primo, il codice li scambierà.

 Option Base 1 Sub vba_sort_array_z_to_a() Dim myArray() As Variant ReDim myArray(5) Dim i As Integer Dim j As Integer Dim Temp As String myArray(1) = "A" myArray(2) = "B" myArray(3) = "C" myArray(4) = "D" myArray(5) = "E" 'sorting array from A to Z For i = LBound(myArray) To UBound(myArray) For j = i + 1 To UBound(myArray) If UCase(myArray(i)) < UCase(myArray(j)) Then Temp = myArray(j) myArray(j) = myArray(i) myArray(i) = Temp End If Next j Next i Debug.Print myArray(1) Debug.Print myArray(2) Debug.Print myArray(3) Debug.Print myArray(4) Debug.Print myArray(5) End Sub

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *