Vettori dinamici
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

Come i vettori statici, i vettori dinamnici, delle sequenze di variabili tutti dello stesso tipo con un ordine preciso, a cui è possibile accedere attraverso l'indice.
Sono utili anche per migliorare la leggibilità del codice come nell'esempio della funzione che converte i numeri in lettere.

AzioneCome fare
DichiarazioneDim Vettore() As Long
Modifica dimensioneReDim Preserve Vettore(0 To 6)
Riempire con valori (variant)Vettore = Array("Rosso", "Verde", "Giallo")
Accedere all'elementoVettore(i)
Prima e ultimo indice del vettoreLBound(Vettore) - Ubound(Vettore)
Numero di elementi NrElementi = Ubound(Vettore) - LBound(Vettore) + 1
SvuotareErase Vettore
Da stringa a vettoreVettore = Split("Rosso,Verde,Giallo",",")
Da vettore a stringaStringa = Join(Vettore, ",")
Da vettore a rangeRange("A1:A5") = Vettore
Da range a vettoreVettore = Range("A1:A5")

Per utilizzare un vettore dinamico deve essere prima dicharato e poi modificata la sua dimensione
Dim Frutti() As String
ReDim Frutti(1 To 3)
Frutti(1) = "Arancia"
Frutti(2) = "Mela"
Frutti(3) = "Banana"

Vettore di variant
Dicharando un vettore di elementi Variant questo può contenere tutti i tipi di dati elementari
Dim Vettore() As Variant
ReDim Vettore(4)
Vettore(0) = 50 ' Integer
Vettore(1) = "Testo" ' String
Vettore(2) = True ' Boolean
Vettore(3) = 1.7 ' Double
Vettore(4) = Date ' Data (oggi)
Un vettore può essere contenuto anche in un elelemento di tipo variant, definito così:
Dim Vettore As Variant

Modifica delle dimensioni
La funzione ReDim modifca la dimension di un array dinamico, senza altri parametri la funzione però non conserva i valori precedentemente contenuti, per conservare i valori può essere utilizzata la funzione ReDim Preserve:
ReDim Preserve Vettore(10)

Assegnazioni di valori ad un vettore
Essitono diversi metodi che consentono di riempire un vettore di variant con valori
Funzione Array
La funzione Array consente di assegnare ad un vettore una serie di valori separati da virgole; il vettore deve essere di tipo Variant.
Frutti = Array("Arancia","Mela","Banana")
Funzione Split
La funzione split ha come parametro una stringa e un separatore: verranno assegnati al vettore i singoli valori stringa.
Frutti = Split("Arancia,Mela,Banana",",")
Assegnazione da un Range
Molto comodo è poter assegnare ad una matrice i valori contenuti un range di celle (viene sempre creata una matice anche se di singola colonna o riga).
Frutti = Range("A1:A5")

Differenze fra Collection e Vettori
Proviamo a chiarire le differenze fra vettori e collection (che possono sembrare molto simili) e quando è meglio usare l'uno o l'altro tipo di dati:
  1. un vettore ha un dimensione fissa ed è preferibile quando il numero dei dati non cambia spesso;
  2. una collection è da preferire quando il numero dei dati varia di frequente;
  3. in una collection di dati elementari (non oggetti) i dati sono in sola lettura.

Indice iniziale di un array
Alcune note per capire l'indice iniziale di un array dinamico.
L'indice iniziale di un vettore dinamico può essere impostato in modo esplicito indicandolo in questo modo:
ReDim Vettore(0 To 5)
se non viene indicato il valore iniziale, come nel caso qui sotto, l'indice iniziale è lo 0.
ReDim Vettore(5)
Questo comportamento standard può essere modificato usando questa opzione Option base: se specificato imposta l'indice iniziale a 1 per tutti in vettori in cui non viene specificato esplicitamente il valore.
L'indice iniziale viene impostato a zero anche utilizzando la funzione Array o Split:
Vettore = Array("Arancia", "Mela", "Banana")
Vettore = Split("Arancia,Mela,Banana", ",")
Il comportamento è diverso invece se assegnamo ad un vettore (una matrice) un range, in questo caso l'indice iniziale è 1.
Ad esempio nel caso qui sotto le dimensioni del vettore sono (1 To 5, 1 To 1)
Vettore = Range("C5:C9")
 

data4idea srls - PIva 01881000937 - info@data4idea.it