In questo articolo ti mostrerò come inserire, modificare o cancellare dati in una ListBox VBA Excel.
Quando si parla di una ListBox VBA in Excel si fa riferimento a una casella di riepilogo da cui un utente può selezionare un elemento da un elenco.
Per creare una casella di riepilogo in Excel, apri l'Editor di Visual Basic e inserisci una UserForm. A questo punto dalla Casella degli strumenti trascina una Casella di riepilogo.

Inserire dati in una ListBox VBA Excel
Vediamo le varie modalità per aggiungere elementi a una ListBox Excel.
In particolare vedremo
- il metodo AddItem
- la proprietà RowSource
Il metodo AddItem
Per aggiungere elementi alla Casella di riepilogo, è possibile utilizzare il metodo AddItem (lo stesso utilizzato per inserire dati in una ComboBox Excel).
Ecco un esempio di codice:

La proprietà RowSource
Un'altra modalità per aggiungere dati a una ListBox è utilizzare la proprietà RowSource.
In questo caso è necessario specificare il nome del foglio di lavoro e successivamente l’intervallo di celle.
Dalla finestra Proprietà della ListBox inserisci il nome del foglio e l’intervallo di celle che contiene i dati (nell'esempio, Foglio1!A1:A5).

La proprietà RowSource da codice
In alternativa puoi utilizzare la proprietà ListBox da codice.

Nel seguente esempio il caricamento dei dati nella ListBox avviene nel momento in cui la UserForm viene avviata attraverso l'evento UserForm_Initialize.

Contare gli elementi della casella di riepilogo
Attraverso il seguente codice VBA potrai ottenere il conteggio totale degli elementi in una casella di riepilogo.
Potrai far questo grazie alla proprietà ListCount della Casella di riepilogo

Trasferire dati da ListBox VBA a celle del foglio di lavoro
Osserviamo le istruzioni trasferire dati da ListBox VBA alle celle del foglio di lavoro.
Per analizzare il codice partiamo dal centro rappresentato dall'istruzione If.
Quest’ultima controlla gli elementi della ListBox selezionati, se la condizione è vera (UserForm1.ListBox1.Selected(i) = True) allora il valore selezionato viene trasferito nella cella attiva (ActiveCell.Value = UserForm1.ListBox1.List(i)).
Il passo successivo è la selezione della cella in basso (ActiveCell.Offset(1).Select) per permettere un nuovo inserimento.
Le operazioni appena descritte saranno ripetute per tutti gli elementi selezionati attraverso il ciclo For … Next.

In sintesi, il clic sul pulsante Trasferisci della UserForm inserisce l’elemento della ListBox nella cella selezionata quindi la selezione si sposta nella cella in basso per consentire un nuovo inserimento.
Cancellare dati in una ListBox Excel
Attraverso il seguente codice, potrai cancellare tutte le voci della casella di riepilogo.
Il seguente codice cancella tutti gli elementi della ListBox1 attraverso il metodo Clear.

Qualora volessi cancellare solo l’elemento selezionato nella ListBox, allora potrai usare il codice associato a un nuovo pulsante.

Il metodo utilizzato è RemoveItem.
Se l'elemento è selezionato (If UserForm1.ListBox1.Selected(i) = True) allora (Then) viene rimosso (UserForm1.ListBox1.RemoveItem i) dalla ListBox. Infine, l’istruzione If viene terminata (End If).
Il risultato sarà il seguente:

Un importante precisazione!
Qualora volessi effettuare una selezione multipla degli elementi della ListBox, allora è necessario modificare la proprietà MultiSelect.

In questo caso il codice per rimuovere gli elementi selezionati deve essere modificato nel modo seguente:

Lo stesso discorso è valido per il trasferimento di valori multipli all'interno del foglio di lavoro.
Il codice da utilizzare sarà il seguente:

Spostare elementi all'interno della ListBox
Attraverso l’inserimento di un SpinButton è possibile creare un automatismo per spostare gli elementi verso il basso o verso l’alto all'interno della ListBox.
Il seguente codice sposta l’elemento selezionato verso il basso.

Ho aggiunto dei commenti (le scritte in verde) per favorire la comprensione del codice. Inoltre, noterai che durante l’esecuzione compariranno delle finestre con dei messaggi. Una volta capito il meccanismo potrai rimuoverli tranquillamente. Attraverso questi messaggi sarà semplice individuare il valore assunto dalla proprietà ListIndex della ListBox.

Il conteggio della lista degli elementi parte da zero. Pertanto, il primo indice della ListBox sarà zero, il secondo indice uguale a uno, il terzo uguale a due e così via.

Il seguente codice sposta l’elemento selezionato verso l’alto.

Per poter utilizzare il pulsante SpinButton è necessario che la proprietà MultiSelect della ListBox sia impostata a 1 - fmMultiSelectMulti. Si tratta della selezione multipla degli elementi.

Spero che questo articolo ti sia utile. Se l'articolo ti è piaciuto lascia pure un commento.
Buon lavoro!
Vuoi saperne di più sui controlli VBA e le UserForm?
Allora potrebbero interessarti i seguenti articoli:
Vuoi imparare a utilizzare il linguaggio Excel VBA?
Basta con i lavori noiosi e ripetitivi! Grazie al VBA puoi far lavorare Excel al tuo posto!
Ho registrato per te un corso interamente dedicato alle Macro e al VBA.
Attraverso degli esempi pratici, ti introdurrò, al mondo delle Macro di Excel illustrandoti tutto il potenziale per automatizzare le tue attività di lavoro quotidiane.
Cosa aspetti?
Sfrutta tutto il potenziale di Excel con il corso Macro e VBA!