In questo articolo ti mostrerò come creare una UserForm con menu a tendina (ComboBox) dipendenti con il linguaggio VBA Excel.
Creare ComboBox dipendenti in Excel con il VBA significa che la selezione fatta in una ComboBox influenza le opzioni disponibili in quella successiva.
Prosegui nella lettura e ti mostrerò come fare passo dopo passo.
Passaggi per creare una UserForm con ComboBox dipendenti
Partiamo dal primo passo ovvero la creazione della UserForm.
Innanzitutto, è necessario aprire l'Editor di VBA.
Per far questo utilizza la scorciatoia da tastiera Alt + F11 o in alternativa premi il tasto destro del mouse sull’etichetta di qualsiasi foglio di lavoro e seleziona la voce Visualizza codice.
Inserire una UserForm
Ora inserisci una UserForm. Fai clic sul menu Inserisci e poi seleziona UserForm.

Aggiungere le ComboBox nella UserForm
A questo punto, utilizzando la Casella degli strumenti aggiungi nella UserForm le due ComboBox (Casella combinata) che rappresentano i menu a tendina.
Se la Casella degli strumenti non viene visualizzata automaticamente, fai clic sul menu Visualizza e seleziona la voce Casella degli strumenti.

Cliccando sul controllo Casella combinata presente nella Casella degli strumenti, aggiungi le caselle combinate trascinando nella UserForm la prima (ComboBox1) a sinistra e la seconda (ComboBox2) a destra.
Una volta completata questa operazione, il risultato sarà simile all’immagine seguente.

Ora, supponi di avere la ComboBox1 per selezionare un reparto aziendale (ad esempio: Amministrazione, Risorse Umane, Magazzino, …).
Mentre la ComboBox2 verrà utilizzata per selezionare i nomi dei dipendenti sulla base del reparto aziendale selezionato nella ComboBox1.
Potrai eventualmente modificare i nomi delle ComboBox.I nomi vengono utilizzati nel codice VBA di Excel.
In questo esempio sono presenti pochi controlli, tuttavia ti suggerisco di modificarne i nomi in presenza di molti controlli per facilitare l’individuazione ed il riferimento durante la scrittura del codice.
Per modificare i nomi della UserForm e delle ComboBox, fai clic sul menu Visualizza e successivamente su Finestra Proprietà (F4 se vuoi utilizzare una scorciatoia da tastiera) e quindi modifica il nome di ciascun controllo.
Scrittura del codice VBA per visualizzare la UserForm
Ora passiamo alla scrittura del codice VBA.
Prima però inserisci un pulsante nel foglio di lavoro come mostrato nella seguente immagine.
Il pulsante verrà utilizzato per visualizzare la UserForm.

Il codice andrà inserito in un modulo, pertanto, dal menu Inserisci seleziona la voce Modulo.
All’interno del Modulo1 aggiungi il seguente codice.

Infine, assegna la macro al pulsante presente nel foglio.
Potrebbe interessarti il seguente articolo: Macro Excel: assegnare macro a un pulsante
Scrittura del codice VBA per popolare la prima casella combinata (ComboBox1)
Una volta assegnata la macro al pulsante potrai visualizzare la UserForm1 ogni volta che farai clic su di esso.
Ora dobbiamo decidere cosa mostrare appena viene visualizzata la UserForm.
Fai clic con il pulsante destro del mouse su UserForm1 e quindi seleziona la voce Visualizza codice.
Selezionare Userform dall'elenco a discesa a sinistra. Successivamente seleziona Initialize dall'elenco a discesa a destra.

Ora aggiungi le seguenti righe di codice:

Queste righe di codice sono utili per popolare la prima casella combinata (ComboBox1).
Al momento, quando selezioniamo un elemento dalla prima ComboBox1, non succederà ancora nulla.Passiamo pertanto alla scrittura del codice relativo alla seconda casella combinata (ComboBox2).
Scrittura del codice VBA per popolare la seconda casella combinata (ComboBox2)
Ora ti mostrerò come inserire il codice VBA per popolare la seconda casella combinata (ComboBox2).
Poiché si tratta di menu a tendina dipendenti è necessario gestire gli elementi visualizzati nella ComboBox2 sulla base della selezione della casella combinata ComboBox1.
Per far questo sarà necessario sfruttare l’evento ComboBox1_Change della ComboBox1. Ciò significa che al cambiamento della selezione della prima casella combinata verranno aggiunti i valori nella seconda ComboBox2.
Nella finestra Gestione progetti presente a sinistra, fai doppio clic su UserForm1.Successivamente, fai doppio clic sulla ComboBox1 e aggiungi il seguente codice:

Il codice VBA appena inserito utilizza il valore della variabile denominata Indice per analizzare ciascuna istruzione Case e individuare quali elementi inserire nella seconda casella combinata (ComboBox2).
Il primo valore della variabile è uguale a zero. Il second valore sarà uguale a 1 e così via.
Potrebbe interessarti il seguente articolo: Select Case VBA: istruzione condizionale
Infine, fai una verifica per controllare che tutto funzioni correttamente.
Fai un clic sul pulsante presente sul foglio di lavoro in modo da visualizzare la UserForm contenente le caselle combinate dipendenti.
Seleziona una voce nella prima ComboBox, ad esempio la voce Magazzino. Ora nella seconda ComboBox dovresti visualizzare i nomi associati a quella voce ovvero Anna, Antonio, Elisa.
Il risultato finale sarà simile alla seguente immagine.

A questo punto, se hai seguito tutti i passaggi suggeriti avrai la tua UserForm con i menu a tendina dipendenti.
Potrebbe interessarti i seguenti articoli:
Porta le tue competenze di Excel al livello successivo con il corso Excel macro e VBA!
Se desideri portare le tue competenze di Excel al livello successivo, scopri il potere delle Macro Excel per automatizzare le tue attività lavorative con il corso Excel Macro e VBA.
