.st0{fill:#FFFFFF;}

Excel Esperto, Macro e VBA

ListBox VBA Excel: casella di riepilogo

 Maggio 27, 2020

By  Damiano Causale

  • Home
  • ListBox VBA Excel: casella di riepilogo

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.

ListBox VBA Excel | 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:

Inserire dati in una ListBox VBA Excel

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).

Inserire dati in una ListBox VBA Excel

La proprietà RowSource da codice

In alternativa puoi utilizzare la proprietà ListBox da codice.

Inserire dati in una ListBox VBA Excel

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

Excel VBA ListBox | Inserire dati in una ListBox VBA Excel

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

Contare gli elementi 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.

Trasferire dati da ListBox VBA a celle del foglio di lavoro

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.

Cancellare dati in una ListBox Excel

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

Cancellare dati in una ListBox Excel

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:

Cancellare dati in una ListBox Excel

Un importante precisazione!

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

Cancellare dati in una ListBox Excel

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

Cancellare dati in una ListBox Excel

Lo stesso discorso è valido per il trasferimento di valori multipli all'interno del foglio di lavoro.

Il codice da utilizzare sarà il seguente:

Cancellare dati in una ListBox Excel

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.

Spostare elementi all'interno della ListBox

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.

Spostare elementi all'interno 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.

Spostare elementi all'interno della ListBox

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

Spostare elementi all'interno della ListBox

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.

Spostare elementi all'interno della ListBox

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:

Damiano Causale


Mi chiamo Damiano Causale, istruttore Microsoft certificato, per lavoro aiuto aziende e privati nell'utilizzo di Excel.

Damiano Causale

Your email address will not be published. Required fields are marked

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}