Che cos'è un array VBA in Excel e come programmarne uno

VBA fa parte della suite Microsoft Office da molti anni. (Microsoft Office)Sebbene non disponga della funzionalità e della potenza complete di un'applicazione VB completa, VBA offre agli utenti di Office la flessibilità per integrare i prodotti Office e automatizzare il lavoro che svolgi al loro interno.

Uno degli strumenti più potenti disponibili in VBA è la capacità di caricare un'intera gamma di dati in un'unica variabile chiamata array. Caricando i dati in questo modo, puoi manipolare o eseguire calcoli su quell'intervallo di dati in vari modi.

Quindi cos'è un array VBA ? In questo articolo risponderemo a questa domanda e ti mostreremo come usarne uno nel tuo script VBA(your own VBA script) .

Che cos'è un array VBA?

L'uso di un array VBA in (VBA)Excel è molto semplice, ma comprendere il concetto di array può essere un po' complesso se non ne hai mai usato uno.

Pensa(Think) a un array come a una scatola con sezioni al suo interno. Un array unidimensionale è una scatola con una linea di sezioni. Un array bidimensionale è una scatola con due linee di sezioni.

Puoi inserire i dati in ogni sezione di questa "scatola" nell'ordine che preferisci.

All'inizio del tuo script VBA , devi definire questa "scatola" definendo il tuo array VBA . Quindi, per creare un array che può contenere un set di dati (un array unidimensionale), dovresti scrivere la riga seguente.

Dim arrMyArray(1 To 6) As String

Più avanti nel tuo programma, puoi inserire i dati in qualsiasi sezione di questo array facendo riferimento alla sezione tra parentesi.

arrMyArray(1) = "Ryan Dube"

È possibile creare una matrice bidimensionale utilizzando la riga seguente.

Dim arrMyArray(1 To 6,1 to 2) As Integer

Il primo numero rappresenta la riga e il secondo è la colonna. Quindi l'array sopra potrebbe contenere un intervallo con 6 righe e 2 colonne.

Puoi caricare qualsiasi elemento di questo array con i dati come segue.

arrMyArray(1,2) = 3

Questo caricherà un 3 nella cella B1.

Un array può contenere qualsiasi tipo di dati come variabile regolare, come stringhe, valori booleani, numeri interi, float e altro.

Il numero tra parentesi può anche essere una variabile. I programmatori usano comunemente un ciclo(Loop) For per contare tutte le sezioni di un array e caricare le celle di dati nel foglio di calcolo nell'array. Vedrai come farlo più avanti in questo articolo.

Come programmare un array VBA in Excel

Diamo un'occhiata a un semplice programma in cui potresti voler caricare informazioni da un foglio di calcolo in un array multidimensionale.

Ad esempio, diamo un'occhiata a un foglio di calcolo delle vendite di prodotti, in cui desideri estrarre il nome del rappresentante, l'articolo e la vendita totale dal foglio di calcolo.

Si noti che in VBA quando si fa riferimento a righe o colonne, si contano righe e colonne(rows and columns) a partire dall'angolo in alto a sinistra da 1. Quindi la colonna rappresentante è 3, la colonna elemento è 4 e la colonna totale è 7.

Per caricare queste tre colonne su tutte le 11 righe, dovrai scrivere il seguente script.

Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i

Noterai che per saltare la riga di intestazione, il numero di riga nel primo For look deve iniziare da 2 anziché da 1. Ciò significa che devi sottrarre 1 per il valore della riga dell'array quando carichi il valore della cella nell'array usando Cells (i, j).Value.

Dove inserire lo script di array VBA(Your VBA Array Script)

Per inserire nel programma uno script VBA in (VBA)Excel , è necessario utilizzare l' editor VBA . Puoi accedervi selezionando il menu Sviluppatore e selezionando (Developer)Visualizza codice(View Code) nella sezione Controlli(Controls) della barra multifunzione.

Se non vedi lo sviluppatore(Developer) nel menu, dovrai aggiungerlo. Per fare ciò, seleziona File e Opzioni(Options) per aprire la finestra Opzioni di Excel.

Cambia i comandi di scelta dal menu a discesa in Tutti i comandi(All Commands) . Seleziona Sviluppatore(Developer) dal menu a sinistra e seleziona il pulsante Aggiungi(Add) per spostarlo nel riquadro a destra. Seleziona la casella di controllo per abilitarla e seleziona OK per terminare.

Quando si apre la finestra Editor di codice(Code Editor) , assicurati che il foglio in cui si trovano i tuoi dati sia selezionato nel riquadro di sinistra. Seleziona Foglio(Worksheet) di lavoro nel menu a discesa a sinistra e Attiva(Activate) a destra. Questo creerà una nuova subroutine chiamata Worksheet_Activate ().

Questa funzione verrà eseguita ogni volta che viene aperto il file del foglio di calcolo. Incolla il codice nel riquadro degli script all'interno di questa subroutine.

Questo script funzionerà attraverso le 12 righe e caricherà il nome del rappresentante dalla colonna 3, l'articolo dalla colonna 4 e la vendita totale dalla colonna 7.

Una volta che entrambi i cicli For sono terminati, l'array bidimensionale arrMyArray contiene tutti i dati specificati dal foglio originale.

Manipolazione di array in Excel VBA

Supponiamo di voler applicare un'imposta sulle vendite del 5% a tutti i prezzi di vendita finali, quindi scrivere tutti i dati in un nuovo foglio.

Puoi farlo aggiungendo un altro ciclo For dopo il primo, con un comando per scrivere i risultati su un nuovo foglio.

For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k

Questo "scaricherà" l'intero array in Sheet2 , con una riga aggiuntiva contenente il totale moltiplicato per 5% per l'importo dell'imposta.

Il foglio risultante sarà simile a questo.

Come puoi vedere, gli array VBA in (VBA)Excel sono estremamente utili e versatili come qualsiasi altro trucco di Excel(any other Excel trick)

L'esempio sopra è un uso molto semplice per un array. Puoi creare array molto più grandi ed eseguire l'ordinamento, la media o molte altre funzioni in base ai dati in essi archiviati.

Se vuoi diventare davvero creativo, puoi persino creare due array contenenti un intervallo di celle(containing a range of cells) da due fogli diversi ed eseguire calcoli tra gli elementi di ciascun array.

Le applicazioni sono limitate solo dalla tua immaginazione.



About the author

Sono uno sviluppatore di software freeware e sostenitore di Windows Vista/7. Ho scritto diverse centinaia di articoli su vari argomenti relativi al sistema operativo, inclusi suggerimenti e trucchi, guide di riparazione e best practice. Offro anche servizi di consulenza in ufficio attraverso la mia azienda, Help Desk Services. Ho una profonda conoscenza del funzionamento di Office 365, delle sue funzionalità e di come utilizzarle nel modo più efficace.



Related posts