Come creare una casella combinata dipendente in VBA Excel?

Sommario:

Anonim

Sappiamo come creare un menu a discesa a cascata su un foglio di lavoro utilizzando la convalida dei dati. Ma come creiamo un menu a discesa combobox a cascata sul form utente VBA. Questo è uno dei bisogni fondamentali.

In questo articolo impareremo come creare una casella combinata dipendente in VBA.

Logica per Combobox dipendente in VBA

Per creare una casella combinata dipendente in VBA è necessario inizializzare la casella combinata sull'evento dell'elemento sorgente. Ad esempio, se una casella combinata dipende da un gruppo di pulsanti di opzione, il codice per caricare la casella combinata dipendente dovrebbe essere eseguito immediatamente dopo che qualcuno seleziona un pulsante di opzione. O se una casella combinata dipende da un'altra casella combinata, a seconda della casella combinata dovrebbe essere caricato ogni volta che il valore nella casella combinata viene modificato.

Basta con la teoria. Facciamo un esempio per vedere come funziona.

ComboBox a seconda di un altro Combobox

Crea due combobox. Innanzitutto si dovrebbero elencare i pochi nomi di paesi. L'altro dovrebbe elencare i nomi degli stati del paese selezionato. Se l'utente cambia il paese nella prima casella combinata, l'elenco della seconda casella combinata dovrebbe essere modificato.

Creiamo un modulo con due caselle combinate con etichette paesi e stati e un pulsante di comando per inviare l'input.

La prima casella combinata dovrebbe elencare i nomi dei paesi e non dipende da alcun valore. Quindi lo caricheremo nell'evento form_intialize come facciamo per l'inizializzazione di base della casella combinata.

Fare doppio clic sul modulo utente. Si aprirà l'area di codifica in UserForm Object. Ora dal menu a tendina di sinistra seleziona il form utente. Quindi dal menu a discesa a destra seleziona inizializza.

Verrà inserito un sottonome vuoto UserForm_Initialize(). Tutto ciò che è scritto in questo sottotitolo verrà eseguito prima che venga visualizzato il form utente.

Quindi scriviamo qui il codice di inizializzazione per combobox.

Private Sub UserForm_Initialize() paesi = Array ("India", "Nepal", "Bhutan", "Shree Lanka") UserForm1.ComboBox1.List = stati End Sub 

Abbiamo la nostra prima casella combinata inizializzata. Ogni volta che caricherai il form utente, la prima combox sarà pronta con il nome dei paesi.

Ora per caricare la seconda combobox, dobbiamo guardare quale valore è selezionato nella prima combobox1 ed eseguire il codice ogni volta che combobox1 cambia i suoi valori. Per questo utilizzeremo l'evento Combobox_AfterUpdate.

Dal menu a discesa a sinistra, seleziona combobox1. Dal menu a tendina a destra, seleziona AfterUpdate. Possiamo anche usare l'evento Change ma ci atterremo ad AfterUpdate nell'articolo.

Ora scrivi il codice seguente:

Private Sub ComboBox1_AfterUpdate() Select Case ComboBox1.Value Case "India": States = Array("Delhi", "UP", "UK", "Gujrat", "Kashmir") Case "Nepal": States = Array("Arun Kshetra", "Janakpur Kshetra", "Kathmandu Kshetra",_ "Gandak Kshetra", "Kapilavastu Kshetra") Caso "Bhutan": stati = Array("Bumthang", "Trongsa", "Punakha", "Thimphu", " Paro") Case "Shree Lanka": afferma = Array("Galle", "Ratnapura", "Colombo", "Badulla", "Jaffna") End Select ComboBox2.List = afferma End Sub 

Qui abbiamo usato un'istruzione select case. L'istruzione select case è utile quando vogliamo vedere quale valore viene scelto tra molti valori. L'ho spiegato qui in dettaglio.

Per memorizzare il valore inserito dall'utente utilizzare il pulsante di invio. Scrivi il codice seguente nel pulsante di comando invia per salvare il paese e lo stato selezionati dall'utente nel foglio di lavoro.

Private Sub CommandButton1_Click() country = ComboBox1.Value State = ComboBox2.Value ThisWorkbook.Worksheets("sheet1").Range("G1") = country ThisWorkbook.Worksheets("sheet1").Range("H1") = State Unload Io End Sub 

Ora per mostrare il form utente, inserisci un pulsante nel foglio di lavoro e scrivi il codice sottostante. Oppure puoi usare un semplice modulo per mostrare il form utente.

Sub load_userform() UserForm1.Show End Sub 

Ora esegui il codice load_userform.

Come funziona?

Quando si esegue il sub che ha il codice userform.show, il VBA esegue gli eventi userform_initialize subito dopo l'esecuzione del comando userform.show. Nell'evento userform_intialize abbiamo inizializzato la prima casella combinata che ha un elenco di paesi. Successivamente il modulo viene mostrato all'utente.

Ora, quando l'utente seleziona un valore dalla prima casella combinata, viene eseguito l'evento combobox1_AfterUpdate. Questo evento contiene il codice per verificare quale valore è selezionato dall'utente in combobox1 e in base a tale valore imposta l'array degli stati e inizializza i valori combobox2 con l'array degli stati.

Quindi sì ragazzi, è così che crei una casella combinata a cascata nel form utente VBA. Spero di essere stato abbastanza esplicativo e che l'articolo sia servito allo scopo. Se hai dubbi su questo articolo o su qualsiasi argomento VBA, chiedimi nella sezione commenti qui sotto.

Iniziare con i moduli utente VBA di Excel| Spiegherò come creare un modulo in excel, come utilizzare il toolbox VBA, come gestire gli input dell'utente e infine come archiviare gli input dell'utente. Esamineremo questi argomenti utilizzando un esempio e una guida passo passo.

Variabili VBA in Excel| VBA sta per Visual Basic for Applications. È un linguaggio di programmazione di Microsoft. Viene utilizzato con applicazioni Microsoft Office come MSExcel, MS-Word e MS-Access mentre le variabili VBA sono parole chiave specifiche.

Ambito variabile VBA di Excel| In tutti i linguaggi di programmazione, abbiamo identificatori di accesso alle variabili che definiscono da dove è possibile accedere a una variabile definita. Excel VBA non fa eccezione. Anche VBA ha identificatori di ambito.

Argomenti ByRef e ByVal | Quando un argomento viene passato come argomento ByRef a una sub o funzione diversa, viene inviato il riferimento della variabile effettiva. Qualsiasi modifica apportata alla copia della variabile si rifletterà nell'argomento originale.

Elimina i fogli senza richieste di conferma utilizzando VBA in Microsoft Excel | Poiché stai eliminando i fogli utilizzando VBA, sai cosa stai facendo. Vorresti dire a Excel di non mostrare questo avviso ed eliminare il dannato foglio.

Aggiungi e salva una nuova cartella di lavoro utilizzando VBA in Microsoft Excel 2016| In questo codice, abbiamo prima creato un riferimento a un oggetto cartella di lavoro. E poi lo abbiamo inizializzato con un nuovo oggetto cartella di lavoro. Il vantaggio di questo approccio è che puoi eseguire facilmente le operazioni su questa nuova cartella di lavoro. Come salvare, chiudere, eliminare, ecc

Visualizza un messaggio sulla barra di stato VBA di Excel| La barra di stato in Excel può essere utilizzata come monitor del codice. Quando il tuo codice VBA è lungo e svolgi diverse attività utilizzando VBA, spesso disabiliti l'aggiornamento dello schermo in modo da non vedere lo sfarfallio dello schermo.

Disattiva i messaggi di avviso utilizzando VBA in Microsoft Excel 2016| Questo codice non solo disabilita gli avvisi VBA, ma aumenta anche l'efficienza temporale del codice. Vediamo come.

Articoli popolari:

50 scorciatoie di Excel per aumentare la produttività | Diventa più veloce nel tuo compito. Queste 50 scorciatoie ti faranno lavorare ancora più velocemente su Excel.

La funzione CERCA.VERT in Excel | Questa è una delle funzioni più utilizzate e popolari di Excel che viene utilizzata per cercare il valore da diversi intervalli e fogli.

CONTA.SE in Excel 2016 | Conta i valori con le condizioni usando questa fantastica funzione. Non è necessario filtrare i dati per contare valori specifici. La funzione Countif è essenziale per preparare la tua dashboard.

Come utilizzare la funzione SOMMA.SE in Excel | Questa è un'altra funzione essenziale della dashboard. Questo ti aiuta a riassumere i valori su condizioni specifiche.