ComboBox consentire agli utenti di selezionare un'opzione da un elenco di menu a discesa. I ComboBox possono essere creati in UserForms VBA o con un foglio di lavoro Excel. In questo tutorial imparerai come creare e manipolare ComboBox in VBA e nei fogli di lavoro Excel.
Se vuoi imparare come creare una casella di riepilogo, fai clic qui: Casella di riepilogo VBA
Se vuoi imparare come creare una casella di controllo, fai clic qui: Casella di controllo VBA
Crea un ComboBox in un foglio di lavoro Excel
Per inserire un ComboBox nel foglio di lavoro, devi andare su Scheda Sviluppatore, clicca Inserire e in Controlli ActiveX scegli Combo box:
Immagine 1. Inserisci un ComboBox nel foglio di lavoro
Quando selezioni il ComboBox che hai inserito, puoi fare clic su Proprietà sotto il Scheda Sviluppatore:
Immagine 2. Modifica proprietà ComboBox
Qui puoi impostare diverse proprietà del ComboBox. Per iniziare, abbiamo cambiato l'attributo Nome a cmbComboBox. Ora possiamo usare ComboBox con questo nome nel codice VBA.
Popolare un ComboBox nel codice VBA
Per prima cosa, dobbiamo popolare il ComboBox con i valori. Nella maggior parte dei casi, è necessario compilare un ComboBox quando viene aperta la cartella di lavoro. Per questo motivo, dobbiamo inserire un codice per popolare il ComboBox in oggetto cartella di lavoro, procedura Aprire. Questa procedura viene eseguita ogni volta che un utente apre la cartella di lavoro. Ecco il codice:
123456789 | Con Sheet1.cmbComboBox.AddItem "John".AddItem "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Termina con |
Quando fai clic sul menu a discesa, otterrai 5 nomi tra cui scegliere (John, Michael, Jennifer, Lilly e Robert):
Immagine 3. Popolare il ComboBox in VBA
Popolare un ComboBox da un intervallo di celle
Un altro modo possibile per popolare un ComboBox è lasciare che un utente lo faccia. Un ComboBox può essere collegato all'intervallo di celle. In questo approccio, ogni volta che un utente immette un nuovo valore nell'intervallo di celle, il ComboBox si aggiornerà con quel valore.
Se vuoi abilitarlo, devi andare su Proprietà del ComboBox e impostare l'attributo ListFillRange all'intervallo di celle (nel nostro caso E2:E5):
Immagine 4. Popolare il ComboBox dall'intervallo di celle
Abbiamo collegato il nostro ComboBox con la gamma E2:E5, dove mettiamo i nomi che vogliamo (Nathan, Harry, George, Roberta). Di conseguenza, il ComboBox è ora popolato con questi nomi:
Immagine 5. ComboBox popolato dall'intervallo di celle
Ottieni un elemento selezionato di un ComboBox in VBA
Lo scopo di un ComboBox è ottenere una scelta da parte dell'utente. Per recuperare una scelta dell'utente, è necessario utilizzare questo codice:
123 | Dim strSelectedItem As VariantstrSelectedItem = Sheet1.cmbComboBox.Value |
La selezione degli utenti è nell'attributo Valore di Foglio1.cmbComboBox oggetto. Questo valore è assegnato alla variabile strSelectedItem:
Immagine 6. Ottieni un valore selezionato dal ComboBox in VBA
Abbiamo selezionato Giulia nel ComboBox ed eseguito la procedura. Come puoi vedere nell'immagine 5, il valore di strSelectedItem è Giulia, che è il valore che abbiamo selezionato. Ora puoi elaborare ulteriormente questa variabile nel codice.
Cancella una casella combinata
Se vuoi cancellare un ComboBox in VBA, devi usare Chiaro metodo di Foglio1.lstComboBox oggetto. Eliminerà tutti gli elementi dal ComboBox. Ecco il codice:
1 | Sheet1.cmbComboBox.Clear |
Quando eseguiamo il codice, otteniamo il ComboBox vuoto:
Immagine 7. Cancella il ComboBox
Usa un ComboBox in un modulo utente
Come accennato, Combobox è più spesso utilizzato in Userforms. Per spiegare come puoi farlo, inseriremo prima un Userform. Nell'editor VBA, fare clic con il pulsante destro del mouse su Nome modulo, fare clic su Inserire e scegli Modulo utente:
Immagine 8. Inserisci un modulo utente
Per visualizzare i controlli per l'inserimento, è necessario abilitare il Cassetta degli attrezzi. Per farlo, clicca suCassetta degli attrezzi icona nella barra degli strumenti. Successivamente, otterrai le finestre con tutti i controlli disponibili. Puoi cliccare su Combo box per crearlo nel form utente.
Immagine 9. Inserisci un ComboBox nel form utente
Chiameremo il ComboBox cmbComboBox. Per popolarlo con i valori, dobbiamo inserire il seguente codice nel metodo Inizializzare dell'oggetto Modulo utente:
12345678910111213 | Private Sub UserForm_Initialize()Con UserForm1.cmbComboBox.AddItem "John".AddItem "Michael".AddItem "Jennifer".AddItem "Lilly".AddItem "Robert"Termina conFine sottotitolo |
Questo codice si attiva ogni volta che un utente esegue il form utente e popola il Combobox con questi 5 nomi:
Immagine 10. Il ComboBox con i valori nel form utente
Se si desidera ottenere il valore selezionato dal ComboBox, è necessario utilizzare la stessa logica per il Combobox in un foglio di lavoro, come spiegato in precedenza nell'articolo.