Creazione di una matrice da un intervallo in VBA

Sto avendo un problema apparentemente di base ma non riesco a trovare risorse che lo affrontino.

In poche parole, voglio solo caricare il contenuto di un intervallo di celle (tutte una colonna) in una matrice.

Sono in grado di realizzare questo per mezzo di

DirArray = Array(Range("A1"), Range("A2")) 

Ma per qualche ragione, non posso creare l’array se express in questo modo:

 DirArray = Array(Range("A1:A2")) 

Il mio intervallo reale è molto più lungo (e può variare in lunghezza), quindi non voglio dover enumerare le celle singolarmente in questo modo. Qualcuno può dirmi come caricare correttamente un’intera gamma in una matrice?

Con il secondo codice:

 MsgBox UBound(DirArray, 1) 

E

 MsgBox UBound(DirArray) 

Restituisce 0, mentre con il primo restituiscono 1.

Basta definire la variabile come variante e renderli uguali:

 Dim DirArray As Variant DirArray = Range("a1:a5").Value 

Non è necessario il comando Array.

L’utilizzo di Value2 offre un vantaggio in termini di prestazioni. Secondo il blog di Charles Williams

Range.Value2 funziona allo stesso modo di Range.Value, tranne per il fatto che non controlla il formato della cella e converte in Data o Valuta. E questo è probabilmente il motivo per cui è più veloce di .Valore quando si recuperano i numeri.

Così

 DirArray = [a1:a5].Value2