2014-11-07 13 views
6

Mi chiedevo come compilare un array multidimensionale in Excel VBA. Un array di 1d può essere riempito come segue:Riempimento array multidimensionale

Dim myarray as variant 

myarray = Array("sheep", "goat", "chicken") 

Come dovrei riempire ogni riga separatamente per un array multi-dimensionale?

+0

È possibile riempire rapidamente un array bidimensionale utilizzando una matrice dinamica e immettendo i dati in un intervallo su un foglio di lavoro. Quindi puoi semplicemente: 'array = Range (" Range ")'. Per più di 2 dimensioni devi leggere ciascun valore singolarmente. –

+0

Questo è un array 1-D che hai lì - intendevi veramente multidimensionale? –

risposta

12

È possibile farlo:

Dim a 
a = [{1,2;3,4;5,6}] 

Limitazioni:

  • Questo funziona solo con array di tipo Variant, perché [x] è una scorciatoia per Evaluate("x") il che significa che x viene interpretato tramite Excel e Excel restituisce solo le varianti. Quindi dichiarare Dim a As Variant o un array Dim a() As Variant funziona correttamente. Ma non qualsiasi altro tipo di array, ad es. Dim a() As String non riesce.

  • Questo funziona solo per un tipo specifico di array multi-dimensionale, vale a dire due array -dimensionale. Non tridimensionale, ecc.

+0

Davvero ?? È assolutamente fantastico! Come mai non ho mai visto questa sintassi prima d'ora ?! –

+1

Va notato che questo funziona solo come mostrato. Una variabile dichiarata come array non potrà essere caricata in questo modo. Verrà visualizzato un errore di compilazione: "Impossibile assegnare all'array." –

+0

@ jbarker2160: Beh, non proprio. Vedi la mia modifica alla risposta. –

Problemi correlati